From: Stephen Berman <stephen.berman@gmx.net>
To: emacs-pretest-bug@gnu.org
Subject: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Fri, 20 Jun 2008 17:34:40 +0200 [thread overview]
Message-ID: <873an8p1bj.fsf@escher.local.home> (raw)
[-- Attachment #1: Type: text/plain, Size: 1412 bytes --]
I was reading a newsgroup with Gnus, typed `n'
(gnus-summary-next-unread-article) to read the next article[1], and got
a wrong-type-argument error. The backtrace is attached. The error
occurs in rfc822-bad-address, when the first argument of
narrow-to-region, rfc822-address-start, is nil. The value is nil at
this point because rfc822-addresses calls rfc822-nuke-whitespace before
rfc822-address-start is assigned an initial value. Simply assigning an
initial non-nil in the let declaration does not work, because then
rfc822-bad-address tries to throw to 'address, but the corresponding
catch in rfc822-addresses has not yet been established -- that happens
after the call to rfc822-nuke-whitespace. I tried moving the catch
above the rfc822-nuke-whitespace call: in combination with an initial
value for rfc822-address-start, this allows rfc822-bad-address to return
an error string to rfc822-addresses -- see the patch below --, but the
caller in my setup, bbdb-rfc822-addresses, expects a list, so this
raises another wrong-type-argument error. If it is legitimate for
rfc822-bad-address to return a non-list value in this case, then the bug
is presumably in bbdb-rfc822-addresses (from bbdb-snarf.el, not part of
Emacs); but I don't know if this is the right diagnosis. If it is, I'll
report it to the BBDB list, and the patch below, or a better one, should
be applied to rfc822.el.
Steve Berman
[-- Attachment #2: backtrace --]
[-- Type: text/plain, Size: 2862 bytes --]
Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil)
narrow-to-region(nil 5)
(save-restriction (insert "_^_") (narrow-to-region rfc822-address-start (if ... ... ...)) (let (...) (while losers ... ... ...)) (goto-char (point-min)) (insert "(Unparsable address -- " reason ": \"") (goto-char (point-max)) (insert "\")"))
rfc822-bad-address("Unbalanced comment (...)")
(if (eobp) (rfc822-bad-address "Unbalanced comment (...)") (/= (setq ch ...) 41))
(while (if (eobp) (rfc822-bad-address "Unbalanced comment (...)") (/= ... 41)) (cond (... ...) (... ...) (... ...) (t ...)))
(cond ((eobp) nil) ((= ... 40) (forward-char 1) (while ... ...) (forward-char -1) (delete-char 2) t) ((memq ch ...) (delete-region ... ...) t) (t nil))
(while (cond (... nil) (... ... ... ... ... t) (... ... t) (t nil)))
(let (ch) (while (cond ... ... ... ...)) (or (not leave-space) (eobp) (bobp) (= ... 32) (insert 32)))
rfc822-nuke-whitespace()
(let ((list nil) tem rfc822-address-start) (rfc822-nuke-whitespace) (while (not ...) (setq rfc822-address-start ...) (setq tem ...) (cond ... ... ...)) (nreverse list))
(save-excursion (set-buffer buf) (make-local-variable (quote case-fold-search)) (setq case-fold-search nil) (insert header-text) (goto-char (point-min)) (while (re-search-forward "\\([^\\]\\(\\\\\\\\\\)*\\)\n[ ]" nil t) (replace-match "\\1 " t)) (goto-char (point-min)) (let (... tem rfc822-address-start) (rfc822-nuke-whitespace) (while ... ... ... ...) (nreverse list)))
(unwind-protect (save-excursion (set-buffer buf) (make-local-variable ...) (setq case-fold-search nil) (insert header-text) (goto-char ...) (while ... ...) (goto-char ...) (let ... ... ... ...)) (and buf (kill-buffer buf)))
(let ((buf ...)) (unwind-protect (save-excursion ... ... ... ... ... ... ... ...) (and buf ...)))
(if (string-match "\\`[ ]*\\([^][
rfc822-addresses("(\"\"Gro\x00df")
(let* ((thisaddr ...) (comma ...) (parsed ...)) (if (string-match "(" ...) (setq start comma) (setq addrs ... addrline ... start 0)))
(while (string-match "\\([^,]+\\)," addrline start) (let* (... ... ...) (if ... ... ...)))
(let (addrs (start 0)) (setq addrline (concat addrline ",")) (while (string-match "\\([^,]+\\)," addrline start) (let* ... ...)) addrs)
bbdb-rfc822-addresses("(\"\"Gro\x00df, Werner\"\") <W.F.Gross@t-online.de>")
bbdb-get-addresses(nil "stephen\\.berman@gmx\\.net" gnus-fetch-field)
bbdb/gnus-update-records(nil)
bbdb/gnus-pop-up-bbdb-buffer()
run-hooks(gnus-article-prepare-hook)
apply(run-hooks gnus-article-prepare-hook)
gnus-run-hooks(gnus-article-prepare-hook)
gnus-article-prepare-display()
gnus-article-prepare(166195 nil)
gnus-summary-display-article(166195)
gnus-summary-next-article(t nil)
gnus-summary-next-unread-article()
call-interactively(gnus-summary-next-unread-article nil nil)
[-- Attachment #3: Type: text/plain, Size: 6364 bytes --]
*** emacs/lisp/mail/rfc822.el.~1.28.~ 2008-05-06 17:54:09.000000000 +0200
--- emacs/lisp/mail/rfc822.el 2008-06-20 17:16:10.000000000 +0200
***************
*** 278,319 ****
(list (substring header-text (match-beginning 1) (match-end 1)))
(let ((buf (generate-new-buffer " rfc822")))
(unwind-protect
! (save-excursion
! (set-buffer buf)
! (make-local-variable 'case-fold-search)
! (setq case-fold-search nil) ;For speed(?)
! (insert header-text)
! ;; unfold continuation lines
! (goto-char (point-min))
! (while (re-search-forward "\\([^\\]\\(\\\\\\\\\\)*\\)\n[ \t]" nil t)
! (replace-match "\\1 " t))
! (goto-char (point-min))
! (let ((list ())
! tem
! rfc822-address-start); this is for rfc822-bad-address
! (rfc822-nuke-whitespace)
! (while (not (eobp))
! (setq rfc822-address-start (point))
! (setq tem
! (catch 'address ; this is for rfc822-bad-address
! (cond ((rfc822-looking-at ?\,)
! nil)
! ((looking-at "[][\000-\037@;:\\.>)]")
! (forward-char)
! (rfc822-bad-address
! (format "Strange character \\%c found"
! (preceding-char))))
! (t
! (rfc822-addresses-1 t)))))
! (cond ((null tem))
! ((stringp tem)
! (setq list (cons tem list)))
! (t
! (setq list (nconc (nreverse tem) list)))))
! (nreverse list)))
! (and buf (kill-buffer buf))))))
(provide 'rfc822)
--- 278,322 ----
(list (substring header-text (match-beginning 1) (match-end 1)))
(let ((buf (generate-new-buffer " rfc822")))
(unwind-protect
! (save-excursion
! (set-buffer buf)
! (make-local-variable 'case-fold-search)
! (setq case-fold-search nil) ;For speed(?)
! (insert header-text)
! ;; unfold continuation lines
! (goto-char (point-min))
! (while (re-search-forward "\\([^\\]\\(\\\\\\\\\\)*\\)\n[ \t]" nil t)
! (replace-match "\\1 " t))
! (goto-char (point-min))
! (let ((list ())
! tem
! ;; This is for rfc822-bad-address. Give it a non-nil initial
! ;; value to prevent rfc822-bad-address from raising a
! ;; wrong-type-argument error
! (rfc822-address-start (point)))
! (catch 'address ; this is for rfc822-bad-address
! (rfc822-nuke-whitespace)
! (while (not (eobp))
! (setq rfc822-address-start (point))
! (setq tem
! (cond ((rfc822-looking-at ?\,)
! nil)
! ((looking-at "[][\000-\037@;:\\.>)]")
! (forward-char)
! (rfc822-bad-address
! (format "Strange character \\%c found"
! (preceding-char))))
! (t
! (rfc822-addresses-1 t))))
! (cond ((null tem))
! ((stringp tem)
! (setq list (cons tem list)))
! (t
! (setq list (nconc (nreverse tem) list)))))
! (nreverse list))))
! (and buf (kill-buffer buf))))))
(provide 'rfc822)
In GNU Emacs 23.0.60.3 (i686-pc-linux-gnu, GTK+ Version 2.12.0)
of 2008-06-16 on escher
Windowing system distributor `The X.Org Foundation', version 11.0.70200000
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=local
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t
Major mode: Debugger
Minor modes in effect:
shell-dirtrack-mode: t
show-paren-mode: t
recentf-mode: t
tabbar-mwheel-mode: t
tabbar-mode: t
display-time-mode: t
tooltip-mode: t
tool-bar-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
temp-buffer-resize-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
<switch-frame> <help-echo> <switch-frame> <down-mouse-1>
<mouse-movement> <mouse-1> C-x o <f1> C-c j l i s <return>
<down-mouse-1> <mouse-1> <help-echo> <select-window>
C-u C-M-x C-c j s u m <return> n <switch-frame> C-x
b SPC r <tab> <return> <switch-frame> f f f f f f f
f f f f f f f f f f f f f f f f f f f f f f f <switch-frame>
C-x b SPC r <tab> <return> <right> <left> <down-mouse-1>
<mouse-movement> <mouse-movement> <drag-mouse-1> C-x
b a <return> C-y C-x b SPC r <tab> <return> C-a <switch-frame>
SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC
SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC SPC
SPC SPC SPC SPC SPC SPC SPC i SPC SPC SPC SPC SPC SPC
SPC SPC SPC SPC SPC q t <help-echo> <select-window>
<down-mouse-5> <mouse-5> <double-down-mouse-5> <double-mouse-5>
<down-mouse-5> <mouse-5> <down-mouse-5> <mouse-5> <down-mouse-5>
<mouse-5> <double-down-mouse-5> <double-mouse-5> <triple-down-mouse-5>
<triple-mouse-5> <down-mouse-4> <mouse-4> <double-down-mouse-4>
<double-mouse-4> <triple-down-mouse-4> <triple-mouse-4>
<select-window> <help-echo> <select-window> <select-window>
<help-echo> <select-window> <help-echo> <help-echo>
<select-window> <help-echo> <help-echo> <select-window>
h M-u <up> <up> <f1> C-x b l i s <tab> C-g C-x b r
<tab> <return> C-M-x C-M-y C-M-x C-x b * S <tab> u
<tab> <return> n <f1> C-x b r <tab> <return> <down-mouse-4>
<mouse-4> <double-down-mouse-4> <double-mouse-4> <down-mouse-4>
<mouse-4> <down-mouse-1> <mouse-1> C-s C-w C-w C-w
C-s C-s C-s C-s C-s C-s C-s C-M-a M-< C-c j d <return>
M-x g u <return> <down-mouse-1> <mouse-movement> <mouse-1>
C-x b r <tab> <return> C-x d C-g C-x b <return> <up>
<up> <up> <up> M-x r e p o <tab> r <tab> b <tab> <return>
<switch-frame> <down-mouse-1> <mouse-movement> <mouse-1>
C-c j <switch-frame> C-c j e <backspace> l i s <return>
<down-mouse-1> <mouse-1> <double-down-mouse-1> <double-mouse-1>
<switch-frame> C-x b <return> M-x r e p o <tab> r <tab>
b <tab> <return>
Recent messages:
Auto-saving...done
Mark saved where search started
Mark set
Auto-saving...done
Mark set
Auto-saving...done
Quit
Making completion list...
byte-code: Command attempted to use minibuffer while in minibuffer
Making completion list...
Footnotes:
[1] This is the article:
<http://permalink.gmane.org/gmane.linux.suse.general.german/166195>
next reply other threads:[~2008-06-20 15:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87ej39juji.fsf@cyd.mit.edu>
2008-06-20 15:34 ` Stephen Berman [this message]
2008-09-24 18:05 ` bug#453: marked as done (23.0.60; rfc822-bad-address: wrong-type-argument error) Emacs bug Tracking System
2008-08-26 21:30 bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error Chong Yidong
2008-08-27 10:38 ` Stephen Berman
2008-08-27 14:38 ` Chong Yidong
2008-09-02 16:07 ` Stephen Berman
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=873an8p1bj.fsf@escher.local.home \
--to=stephen.berman@gmx.net \
--cc=453@emacsbugs.donarmstrong.com \
--cc=emacs-pretest-bug@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.