Commit 8eb94161 authored by Eli Zaretskii's avatar Eli Zaretskii

Be more defensive regarding elements of 'load-history'

* lisp/loadhist.el (file-dependents):
* lisp/apropos.el (apropos-library):
* lisp/help-fns.el (help-fns--autoloaded-p, help--loaded-p):
* lisp/emacs-lisp/package.el (package--list-loaded-files):
Don't assume 'load-history' elements must have a string as their
'car'.  (Bug#34462)
parent cb95d771
Pipeline #880 failed with stage
in 60 minutes and 1 second
...@@ -681,7 +681,7 @@ the output includes key-bindings of commands." ...@@ -681,7 +681,7 @@ the output includes key-bindings of commands."
(re (concat "\\(?:\\`\\|[\\/]\\)" (regexp-quote file) (re (concat "\\(?:\\`\\|[\\/]\\)" (regexp-quote file)
"\\(\\.\\|\\'\\)"))) "\\(\\.\\|\\'\\)")))
(while (and lh (null lh-entry)) (while (and lh (null lh-entry))
(if (and (caar lh) (string-match re (caar lh))) (if (and (stringp (caar lh)) (string-match re (caar lh)))
(setq lh-entry (car lh)) (setq lh-entry (car lh))
(setq lh (cdr lh))))) (setq lh (cdr lh)))))
(unless lh-entry (error "Unknown library `%s'" file))) (unless lh-entry (error "Unknown library `%s'" file)))
......
...@@ -756,7 +756,8 @@ DIR, sorted by most recently loaded last." ...@@ -756,7 +756,8 @@ DIR, sorted by most recently loaded last."
(let* ((history (delq nil (let* ((history (delq nil
(mapcar (lambda (x) (mapcar (lambda (x)
(let ((f (car x))) (let ((f (car x)))
(and f (file-name-sans-extension f)))) (and (stringp f)
(file-name-sans-extension f))))
load-history))) load-history)))
(dir (file-truename dir)) (dir (file-truename dir))
;; List all files that have already been loaded. ;; List all files that have already been loaded.
......
...@@ -76,7 +76,7 @@ The functions will receive the function name as argument.") ...@@ -76,7 +76,7 @@ The functions will receive the function name as argument.")
(let* ((re (load-history-regexp file)) (let* ((re (load-history-regexp file))
(done nil)) (done nil))
(dolist (x load-history) (dolist (x load-history)
(and (car x) (string-match-p re (car x)) (setq done t))) (and (stringp (car x)) (string-match-p re (car x)) (setq done t)))
done))) done)))
(defun help--load-prefixes (prefixes) (defun help--load-prefixes (prefixes)
...@@ -521,7 +521,7 @@ FILE is the file where FUNCTION was probably defined." ...@@ -521,7 +521,7 @@ FILE is the file where FUNCTION was probably defined."
(target (cons t function)) (target (cons t function))
found) found)
(while (and load-hist (not found)) (while (and load-hist (not found))
(and (caar load-hist) (and (stringp (caar load-hist))
(equal (file-name-sans-extension (caar load-hist)) file) (equal (file-name-sans-extension (caar load-hist)) file)
(setq found (member target (cdar load-hist)))) (setq found (member target (cdar load-hist))))
(setq load-hist (cdr load-hist))) (setq load-hist (cdr load-hist)))
......
...@@ -96,7 +96,8 @@ A library name is equivalent to the file name that `load-library' would load." ...@@ -96,7 +96,8 @@ A library name is equivalent to the file name that `load-library' would load."
(let ((provides (file-provides file)) (let ((provides (file-provides file))
(dependents nil)) (dependents nil))
(dolist (x load-history dependents) (dolist (x load-history dependents)
(when (file-set-intersect provides (file-requires (car x))) (when (and (stringp (car x))
(file-set-intersect provides (file-requires (car x))))
(push (car x) dependents))))) (push (car x) dependents)))))
(defun read-feature (prompt &optional loaded-p) (defun read-feature (prompt &optional loaded-p)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment