From: Drew Adams <drew.adams@oracle.com>
To: 17564@debbugs.gnu.org
Subject: bug#17564: 24.4.50; REGRESSION: (wrong-type-argument arrayp C-source)
Date: Fri, 23 May 2014 11:03:48 -0700 (PDT) [thread overview]
Message-ID: <b30fe34b-3f09-4e7e-a1a0-425178cd8ea4@default> (raw)
The code of `describe-function-1' seems to have changed to cause this
regression. In this sexp of `describe-function-1':
(and (or (byte-code-function-p def)
(keymapp def)
(memq (car-safe def) '(macro lambda closure)))
file-name
(help-fns--autoloaded-p function file-name))
if the FUNCTION has been redefined, as below, each of the `and' clauses
returns non-nil leading up to `help-fns--autoloaded-p', and that
function fails because it is given `C-source' as its FILE-NAME arg.
emacs -Q
Evaluate this:
(or (fboundp '1on1-ORIG-top-level)
(fset '1on1-ORIG-top-level (symbol-function 'top-level)))
(defun top-level ()
"Exit all recursive editing levels."
(interactive)
;; (1on1-color-minibuffer-frame-on-exit)
(1on1-ORIG-top-level))
C-h f top-level
You get this backtrace:
Debugger entered--Lisp error: (wrong-type-argument arrayp C-source)
file-truename(C-source)
(file-name-sans-extension (file-truename file))
(let* ((file (file-name-sans-extension (file-truename file))) (load-hist =
load-history) (target (cons t function)) found) (while (and load-hist (not =
found)) (and (caar load-hist) (equal (file-name-sans-extension (caar load-h=
ist)) file) (setq found (member target (cdar load-hist)))) (setq load-hist =
(cdr load-hist))) found)
(closure (t) (function file) "Return non-nil if FUNCTION has previously b=
een autoloaded.\nFILE is the file where FUNCTION was probably defined." (le=
t* ((file (file-name-sans-extension (file-truename file))) (load-hist load-=
history) (target (cons t function)) found) (while (and load-hist (not found=
)) (and (caar load-hist) (equal (file-name-sans-extension (caar load-hist))=
file) (setq found (member target (cdar load-hist)))) (setq load-hist (cdr =
load-hist))) found))(top-level C-source)
apply((closure (t) (function file) "Return non-nil if FUNCTION has previo=
usly been autoloaded.\nFILE is the file where FUNCTION was probably defined=
." (let* ((file (file-name-sans-extension (file-truename file))) (load-hist=
load-history) (target (cons t function)) found) (while (and load-hist (not=
found)) (and (caar load-hist) (equal (file-name-sans-extension (caar load-=
hist)) file) (setq found (member target (cdar load-hist)))) (setq load-hist=
(cdr load-hist))) found)) (top-level C-source))
* help-fns--autoloaded-p(top-level C-source)
(and (or (byte-code-function-p def) (keymapp def) (memq (car-safe def) (q=
uote (macro lambda closure)))) file-name (help-fns--autoloaded-p function f=
ile-name))
(if (and (or (byte-code-function-p def) (keymapp def) (memq (car-safe def=
) (quote (macro lambda closure)))) file-name (help-fns--autoloaded-p functi=
on file-name)) (if (commandp def) "an interactive autoloaded " "an autoload=
ed ") (if (commandp def) "an interactive " "a "))
(let* ((advised (and (symbolp function) (featurep (quote nadvice)) (advic=
e--p (advice--symbol-function function)))) (real-function (or (and advised =
(advice--cd*r (advice--symbol-function function))) function)) (def (if (sym=
bolp real-function) (symbol-function real-function) real-function)) (aliase=
d (or (symbolp def) (and advised (symbolp real-function)))) (real-def (cond=
(aliased (let ((f real-function)) (while (and ... ...) (setq f ...)) f)) (=
(subrp def) (intern (subr-name def))) (t def))) (file-name (find-lisp-objec=
t-file-name function def)) (pt1 (save-current-buffer (set-buffer (help-buff=
er)) (point))) (beg (if (and (or (byte-code-function-p def) (keymapp def) (=
memq (car-safe def) (quote ...))) file-name (help-fns--autoloaded-p functio=
n file-name)) (if (commandp def) "an interactive autoloaded " "an autoloade=
d ") (if (commandp def) "an interactive " "a ")))) (princ (cond ((or (strin=
gp def) (vectorp def)) "a keyboard macro") ((subrp def) (if (eq (quote unev=
alled) (cdr (subr-arity def))) (concat beg "special form") (concat beg "bui=
lt-in function"))) (aliased (format "an alias for `%s'" real-def)) ((autolo=
adp def) (format "%s autoloaded %s" (if (commandp def) "an interactive" "an=
") (if (eq (nth 4 def) (quote keymap)) "keymap" (if (nth 4 def) "Lisp macro=
" "Lisp function")))) ((or (eq (car-safe def) (quote macro)) (macrop functi=
on)) (concat beg "Lisp macro")) ((byte-code-function-p def) (concat beg "co=
mpiled Lisp function")) ((eq (car-safe def) (quote lambda)) (concat beg "Li=
sp function")) ((eq (car-safe def) (quote closure)) (concat beg "Lisp closu=
re")) ((keymapp def) (let ((is-full nil) (elts (cdr-safe def))) (while elts=
(if (char-table-p ...) (setq is-full t elts nil)) (setq elts (cdr-safe elt=
s))) (concat beg (if is-full "keymap" "sparse keymap")))) (t ""))) (if (and=
aliased (not (fboundp real-def))) (princ ",\nwhich is not defined. Please=
make a bug report.") (save-current-buffer (set-buffer standard-output) (sa=
ve-excursion (let ((save-match-data-internal (match-data))) (unwind-protect=
(progn (if ... ...)) (set-match-data save-match-data-internal (quote evapo=
rate)))))) (if file-name (progn (princ " in `") (princ (if (eq file-name (q=
uote C-source)) "C source code" (file-name-nondirectory file-name))) (princ=
"'") (save-current-buffer (set-buffer standard-output) (save-excursion (re=
-search-backward "`\\([^`']+\\)'" nil t) (help-xref-button 1 (quote help-fu=
nction-def) function file-name))))) (princ ".") (save-current-buffer (set-b=
uffer (help-buffer)) (fill-region-as-paragraph (save-excursion (goto-char p=
t1) (forward-line 0) (point)) (point))) (terpri) (terpri) (let* ((doc-raw (=
documentation function t)) (doc (progn (and (autoloadp real-def) doc-raw he=
lp-enable-auto-load (string-match "\\([^\\]=3D\\|[^=3D]\\|\\`\\)\\\\[[{<]" =
doc-raw) (load ... t)) (substitute-command-keys doc-raw)))) (help-fns--key-=
bindings function) (save-current-buffer (set-buffer standard-output) (setq =
doc (help-fns--signature function doc real-def real-function)) (run-hook-wi=
th-args (quote help-fns-describe-function-functions) function) (insert "\n"=
(or doc "Not documented."))))))
(closure (t) (function) (let* ((advised (and (symbolp function) (featurep=
(quote nadvice)) (advice--p (advice--symbol-function function)))) (real-fu=
nction (or (and advised (advice--cd*r (advice--symbol-function function))) =
function)) (def (if (symbolp real-function) (symbol-function real-function)=
real-function)) (aliased (or (symbolp def) (and advised (symbolp real-func=
tion)))) (real-def (cond (aliased (let (...) (while ... ...) f)) ((subrp de=
f) (intern (subr-name def))) (t def))) (file-name (find-lisp-object-file-na=
me function def)) (pt1 (save-current-buffer (set-buffer (help-buffer)) (poi=
nt))) (beg (if (and (or (byte-code-function-p def) (keymapp def) (memq ... =
...)) file-name (help-fns--autoloaded-p function file-name)) (if (commandp =
def) "an interactive autoloaded " "an autoloaded ") (if (commandp def) "an =
interactive " "a ")))) (princ (cond ((or (stringp def) (vectorp def)) "a ke=
yboard macro") ((subrp def) (if (eq (quote unevalled) (cdr ...)) (concat be=
g "special form") (concat beg "built-in function"))) (aliased (format "an a=
lias for `%s'" real-def)) ((autoloadp def) (format "%s autoloaded %s" (if (=
commandp def) "an interactive" "an") (if (eq ... ...) "keymap" (if ... "Lis=
p macro" "Lisp function")))) ((or (eq (car-safe def) (quote macro)) (macrop=
function)) (concat beg "Lisp macro")) ((byte-code-function-p def) (concat =
beg "compiled Lisp function")) ((eq (car-safe def) (quote lambda)) (concat =
beg "Lisp function")) ((eq (car-safe def) (quote closure)) (concat beg "Lis=
p closure")) ((keymapp def) (let ((is-full nil) (elts ...)) (while elts (if=
... ...) (setq elts ...)) (concat beg (if is-full "keymap" "sparse keymap"=
)))) (t ""))) (if (and aliased (not (fboundp real-def))) (princ ",\nwhich i=
s not defined. Please make a bug report.") (save-current-buffer (set-buffe=
r standard-output) (save-excursion (let ((save-match-data-internal ...)) (u=
nwind-protect (progn ...) (set-match-data save-match-data-internal ...)))))=
(if file-name (progn (princ " in `") (princ (if (eq file-name ...) "C sour=
ce code" (file-name-nondirectory file-name))) (princ "'") (save-current-buf=
fer (set-buffer standard-output) (save-excursion (re-search-backward "`\\([=
^`']+\\)'" nil t) (help-xref-button 1 ... function file-name))))) (princ ".=
") (save-current-buffer (set-buffer (help-buffer)) (fill-region-as-paragrap=
h (save-excursion (goto-char pt1) (forward-line 0) (point)) (point))) (terp=
ri) (terpri) (let* ((doc-raw (documentation function t)) (doc (progn (and .=
.. doc-raw help-enable-auto-load ... ...) (substitute-command-keys doc-raw)=
))) (help-fns--key-bindings function) (save-current-buffer (set-buffer stan=
dard-output) (setq doc (help-fns--signature function doc real-def real-func=
tion)) (run-hook-with-args (quote help-fns-describe-function-functions) fun=
ction) (insert "\n" (or doc "Not documented.")))))))(top-level)
apply((closure (t) (function) (let* ((advised (and (symbolp function) (fe=
aturep (quote nadvice)) (advice--p (advice--symbol-function function)))) (r=
eal-function (or (and advised (advice--cd*r (advice--symbol-function functi=
on))) function)) (def (if (symbolp real-function) (symbol-function real-fun=
ction) real-function)) (aliased (or (symbolp def) (and advised (symbolp rea=
l-function)))) (real-def (cond (aliased (let (...) (while ... ...) f)) ((su=
brp def) (intern (subr-name def))) (t def))) (file-name (find-lisp-object-f=
ile-name function def)) (pt1 (save-current-buffer (set-buffer (help-buffer)=
) (point))) (beg (if (and (or (byte-code-function-p def) (keymapp def) (mem=
q ... ...)) file-name (help-fns--autoloaded-p function file-name)) (if (com=
mandp def) "an interactive autoloaded " "an autoloaded ") (if (commandp def=
) "an interactive " "a ")))) (princ (cond ((or (stringp def) (vectorp def))=
"a keyboard macro") ((subrp def) (if (eq (quote unevalled) (cdr ...)) (con=
cat beg "special form") (concat beg "built-in function"))) (aliased (format=
"an alias for `%s'" real-def)) ((autoloadp def) (format "%s autoloaded %s"=
(if (commandp def) "an interactive" "an") (if (eq ... ...) "keymap" (if ..=
. "Lisp macro" "Lisp function")))) ((or (eq (car-safe def) (quote macro)) (=
macrop function)) (concat beg "Lisp macro")) ((byte-code-function-p def) (c=
oncat beg "compiled Lisp function")) ((eq (car-safe def) (quote lambda)) (c=
oncat beg "Lisp function")) ((eq (car-safe def) (quote closure)) (concat be=
g "Lisp closure")) ((keymapp def) (let ((is-full nil) (elts ...)) (while el=
ts (if ... ...) (setq elts ...)) (concat beg (if is-full "keymap" "sparse k=
eymap")))) (t ""))) (if (and aliased (not (fboundp real-def))) (princ ",\nw=
hich is not defined. Please make a bug report.") (save-current-buffer (set=
-buffer standard-output) (save-excursion (let ((save-match-data-internal ..=
.)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ..=
.))))) (if file-name (progn (princ " in `") (princ (if (eq file-name ...) "=
C source code" (file-name-nondirectory file-name))) (princ "'") (save-curre=
nt-buffer (set-buffer standard-output) (save-excursion (re-search-backward =
"`\\([^`']+\\)'" nil t) (help-xref-button 1 ... function file-name))))) (pr=
inc ".") (save-current-buffer (set-buffer (help-buffer)) (fill-region-as-pa=
ragraph (save-excursion (goto-char pt1) (forward-line 0) (point)) (point)))=
(terpri) (terpri) (let* ((doc-raw (documentation function t)) (doc (progn =
(and ... doc-raw help-enable-auto-load ... ...) (substitute-command-keys do=
c-raw)))) (help-fns--key-bindings function) (save-current-buffer (set-buffe=
r standard-output) (setq doc (help-fns--signature function doc real-def rea=
l-function)) (run-hook-with-args (quote help-fns-describe-function-function=
s) function) (insert "\n" (or doc "Not documented."))))))) top-level)
* describe-function-1(top-level)
...
In GNU Emacs 24.4.50.1 (i686-pc-mingw32)
of 2014-05-17 on ODIEONE
Bzr revision: 117119 eggert@cs.ucla.edu-20140517081131-ugu7ociaoec2xk7y
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --prefix=3D/c/Devel/emacs/snapshot/trunk
--enable-checking=3Dyes,glyphs 'CFLAGS=3D-O0 -g3'
LDFLAGS=3D-Lc:/Devel/emacs/lib 'CPPFLAGS=3D-DGC_MCHECK=3D1
-Ic:/Devel/emacs/include''
next reply other threads:[~2014-05-23 18:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-23 18:03 Drew Adams [this message]
2014-06-25 0:49 ` bug#17564: 24.4.50; REGRESSION: (wrong-type-argument arrayp C-source) Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b30fe34b-3f09-4e7e-a1a0-425178cd8ea4@default \
--to=drew.adams@oracle.com \
--cc=17564@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).