diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2016-04-29 18:22:58 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2016-04-29 18:22:58 +0200 |
commit | 1a3a1f709d43836772bc0a84fa67694ff8123df5 (patch) | |
tree | 36886f4f0a347318934a9a8e384800e71d3edaf6 /lisp | |
parent | 35fb7897f161d5e5a87e039dc1e427094640b0c8 (diff) | |
download | emacs-1a3a1f709d43836772bc0a84fa67694ff8123df5.tar.gz emacs-1a3a1f709d43836772bc0a84fa67694ff8123df5.tar.bz2 emacs-1a3a1f709d43836772bc0a84fa67694ff8123df5.zip |
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).
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/apropos.el | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/lisp/apropos.el b/lisp/apropos.el index eb145bdc571..6009f30f7a8 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el @@ -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)) |