emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals-release/org f9aeba5dd7: org.el: Avoid crash in `org-fil


From: ELPA Syncer
Subject: [elpa] externals-release/org f9aeba5dd7: org.el: Avoid crash in `org-file-contents' in case of network failure
Date: Sun, 26 Feb 2023 06:58:14 -0500 (EST)

branch: externals-release/org
commit f9aeba5dd783c2c67bcb3dd52d6c424560bd1532
Author: Damien Cassou <damien@cassou.me>
Commit: Ihor Radchenko <yantar92@posteo.net>

    org.el: Avoid crash in `org-file-contents' in case of network failure
    
    * lisp/org.el (org-file-contents): Wrap the
    `url-retrieve-synchronously' call into a `condition-case' block to
    avoid throwing an error when NOERROR is non-nil.
    
    TINYCHANGE
---
 lisp/org.el | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 9a4f7803cf..af66554a5f 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4559,21 +4559,25 @@ is available.  This option applies only if FILE is a 
URL."
      (cache)
      (is-url
       (if (org--should-fetch-remote-resource-p file)
-          (with-current-buffer (url-retrieve-synchronously file)
-            (goto-char (point-min))
-            ;; Move point to after the url-retrieve header.
-            (search-forward "\n\n" nil :move)
-            ;; Search for the success code only in the url-retrieve header.
-            (if (save-excursion
-                  (re-search-backward "HTTP.*\\s-+200\\s-OK" nil :noerror))
-                ;; Update the cache `org--file-cache' and return contents.
-                (puthash file
-                         (buffer-substring-no-properties (point) (point-max))
-                         org--file-cache)
-              (funcall (if noerror #'message #'user-error)
-                       "Unable to fetch file from %S"
-                       file)
-              nil))
+          (condition-case error
+              (with-current-buffer (url-retrieve-synchronously file)
+                (goto-char (point-min))
+                ;; Move point to after the url-retrieve header.
+                (search-forward "\n\n" nil :move)
+                ;; Search for the success code only in the url-retrieve header.
+                (if (save-excursion
+                      (re-search-backward "HTTP.*\\s-+200\\s-OK" nil :noerror))
+                    ;; Update the cache `org--file-cache' and return contents.
+                    (puthash file
+                             (buffer-substring-no-properties (point) 
(point-max))
+                             org--file-cache)
+                  (funcall (if noerror #'message #'user-error)
+                           "Unable to fetch file from %S"
+                           file)
+                  nil))
+            (error (if noerror
+                       (message "Org could't download \"%s\": %s %S" file (car 
error) (cdr error))
+                     (signal (car error) (cdr error)))))
         (funcall (if noerror #'message #'user-error)
                  "The remote resource %S is considered unsafe, and will not be 
downloaded."
                  file)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]