]> code.delx.au - gnu-emacs/commitdiff
Add a sanity check to apropos-documentation-internal
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 29 Apr 2016 16:22:58 +0000 (18:22 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 29 Apr 2016 16:22:58 +0000 (18:22 +0200)
* lisp/apropos.el (apropos-documentation-internal): Add a
sanity check to be less fragile in the presence of invalid
data (bug#16725).

lisp/apropos.el

index eb145bdc5719a181079136d2276ad317db8061c1..6009f30f7a8bc25979f19b2620dcc47a77891ad6 100644 (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))