Add a sanity check to apropos-documentation-internal

* lisp/apropos.el (apropos-documentation-internal): Add a
sanity check to be less fragile in the presence of invalid
data (bug#16725).
This commit is contained in:
Lars Ingebrigtsen 2016-04-29 18:22:58 +02:00
parent 35fb7897f1
commit 1a3a1f709d

View file

@ -867,19 +867,23 @@ Returns list of symbols and documentation found."
symbol)))))
(defun apropos-documentation-internal (doc)
(if (consp doc)
(apropos-documentation-check-elc-file (car doc))
(if (and doc
(string-match apropos-all-words-regexp doc)
(apropos-true-hit-doc doc))
(when apropos-match-face
(setq doc (substitute-command-keys (copy-sequence doc)))
(if (or (string-match apropos-pattern-quoted doc)
(string-match apropos-all-words-regexp doc))
(put-text-property (match-beginning 0)
(match-end 0)
'face apropos-match-face doc))
doc))))
(cond
((consp doc)
(apropos-documentation-check-elc-file (car doc)))
((and doc
;; Sanity check in case bad data has snuck into the
;; documentation slot.
(stringp doc)
(string-match apropos-all-words-regexp doc)
(apropos-true-hit-doc doc))
(when apropos-match-face
(setq doc (substitute-command-keys (copy-sequence doc)))
(if (or (string-match apropos-pattern-quoted doc)
(string-match apropos-all-words-regexp doc))
(put-text-property (match-beginning 0)
(match-end 0)
'face apropos-match-face doc))
doc))))
(defun apropos-format-plist (pl sep &optional compare)
(setq pl (symbol-plist pl))