org-latex-preview: Guard against deleted buf/ov

* lisp/org-latex-preview.el (org-latex-preview--place-images): Since the
image generation and placement is asynchronous, it is possible that in
the meantime the target overlay or even buffer could be deleted.  To
avoid errors, we simple check that this is not the case before
attempting to place preview images.
This commit is contained in:
TEC 2024-01-06 16:35:12 +08:00
parent 557275af54
commit c20bf88205
Signed by: tec
SSH Key Fingerprint: SHA256:eobz41Mnm0/iYWBvWThftS0ElEs1ftBr6jamutnXc/A
1 changed files with 15 additions and 15 deletions

View File

@ -2153,21 +2153,21 @@ listed in EXTENDED-INFO will be used.
If this is an export run, images will only be cached, not placed."
(let ((fragments (or fragments (plist-get extended-info :fragments))))
(if (plist-get extended-info :place-preview-p)
(with-current-buffer (plist-get extended-info :org-buffer)
(save-excursion
(cl-loop
for fragment-info in fragments
for image-file = (plist-get fragment-info :path)
for ov = (plist-get fragment-info :overlay)
do (unless (overlay-buffer ov)
(message "Offending overlay for fragment %S" fragment-info))
do (org-latex-preview--update-overlay
ov
(org-latex-preview--cache-image
(plist-get fragment-info :key)
image-file
(org-latex-preview--display-info
extended-info fragment-info))))))
(when (buffer-live-p (plist-get extended-info :org-buffer))
(with-current-buffer (plist-get extended-info :org-buffer)
(save-excursion
(cl-loop
for fragment-info in fragments
for image-file = (plist-get fragment-info :path)
for ov = (plist-get fragment-info :overlay)
when (overlay-buffer ov)
do (org-latex-preview--update-overlay
ov
(org-latex-preview--cache-image
(plist-get fragment-info :key)
image-file
(org-latex-preview--display-info
extended-info fragment-info)))))))
(dolist (fragment-info fragments)
(org-latex-preview--cache-image
(plist-get fragment-info :key)