From 938bca8e4141f5f96497f9be26b0ea0bb90f40cd Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 21 Jan 2015 23:16:45 -0500 Subject: Avoid generating invalid usage info for pathological function Fixes: debbugs:19645 * lisp/help.el (help-make-usage): Don't turn a "_" arg into an empty-string. * lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Don't confuse a string body with a docstring. --- lisp/emacs-lisp/cl-generic.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lisp/emacs-lisp/cl-generic.el') diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index 8dee9a38ab0..f214faff237 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -228,7 +228,8 @@ This macro can only be used within the lexical scope of a cl-generic method." "Make the lambda expression for a method with ARGS and BODY." (let ((plain-args ()) (specializers nil) - (doc-string (if (stringp (car-safe body)) (pop body))) + (doc-string (if (and (stringp (car-safe body)) (cdr body)) + (pop body))) (mandatory t)) (dolist (arg args) (push (pcase arg @@ -252,7 +253,7 @@ This macro can only be used within the lexical scope of a cl-generic method." ;; destructuring args, `declare' and whatnot). (pcase (macroexpand fun macroenv) (`#'(lambda ,args . ,body) - (let* ((doc-string (and doc-string (stringp (car body)) + (let* ((doc-string (and doc-string (stringp (car body)) (cdr body) (pop body))) (cnm (make-symbol "cl--cnm")) (nmp (make-symbol "cl--nmp")) -- cgit v1.2.3