]> git.notmuchmail.org Git - notmuch/commitdiff
notmuch-show.el: handle the case where icalendar-import-buffer returns nil
authorTomi Ollila <tomi.ollila@iki.fi>
Thu, 8 Nov 2012 12:08:00 +0000 (14:08 +0200)
committerDavid Bremner <bremner@debian.org>
Sun, 25 Nov 2012 15:06:23 +0000 (11:06 -0400)
icalendar-import-buffer can fail by an error signal (which have been
witnessed) but according to its docstring it can also return nil
when failing (it returns t when succeeding).

Now that the error is caught by the caller of notmuch-show-inset-part-*
functions in case icalendar-import-buffer returns nil an explicit
error is signaled and unwind-protect takes care of deleting the
temporary file (just in case, it is usually not written to the fs yet).

emacs/notmuch-show.el

index ac7e644f623da76bd784ce95a9d2cd994c466c28..24db4c70aac6ebb9c4b73a5f12dd74e784bf8058 100644 (file)
@@ -754,12 +754,15 @@ message at DEPTH in the current thread."
              (replace-match "\n" nil nil))
            (let ((file (make-temp-file "notmuch-ical"))
                  result)
-             (icalendar-import-buffer file t)
-             (set-buffer (get-file-buffer file))
-             (setq result (buffer-substring (point-min) (point-max)))
-             (set-buffer-modified-p nil)
-             (kill-buffer (current-buffer))
-             (delete-file file)
+             (unwind-protect
+                 (progn
+                   (unless (icalendar-import-buffer file t)
+                     (error "Icalendar import error. See *icalendar-errors* for more information"))
+                   (set-buffer (get-file-buffer file))
+                   (setq result (buffer-substring (point-min) (point-max)))
+                   (set-buffer-modified-p nil)
+                   (kill-buffer (current-buffer)))
+               (delete-file file))
              result)))
   t)