]> git.eshelyaron.com Git - emacs.git/commitdiff
Make package-dir-info more resilient
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 5 Dec 2021 01:13:00 +0000 (02:13 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 5 Dec 2021 01:13:00 +0000 (02:13 +0100)
* lisp/emacs-lisp/package.el (package-dir-info): Check that the
file exists before using it (bug#41489).

lisp/emacs-lisp/package.el

index 08dfe504d27cdc8e1e3b192e69e05611a1d04577..66bbd631a72203d5cd30777742161cfeb321bca2 100644 (file)
@@ -1181,13 +1181,17 @@ The return result is a `package-desc'."
             info)
         (while files
           (with-temp-buffer
-            (insert-file-contents (pop files))
-            ;; When we find the file with the data,
-            (when (setq info (ignore-errors (package-buffer-info)))
-              ;; stop looping,
-              (setq files nil)
-              ;; set the 'dir kind,
-              (setf (package-desc-kind info) 'dir))))
+            (let ((file (pop files)))
+              ;; The file may be a link to a nonexistent file; e.g., a
+              ;; lock file.
+              (when (file-exists-p file)
+                (insert-file-contents file)
+                ;; When we find the file with the data,
+                (when (setq info (ignore-errors (package-buffer-info)))
+                  ;; stop looping,
+                  (setq files nil)
+                  ;; set the 'dir kind,
+                  (setf (package-desc-kind info) 'dir))))))
         (unless info
           (error "No .el files with package headers in `%s'" default-directory))
         ;; and return the info.