GNU bug report logs - #453
23.0.60; rfc822-bad-address: wrong-type-argument error

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Fri, 20 Jun 2008 15:40:04 UTC

Severity: normal

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 453 in the body.
You can then email your comments to 453 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#453; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Stephen Berman <stephen.berman <at> gmx.net>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stephen Berman <stephen.berman <at> gmx.net>
To: emacs-pretest-bug <at> gnu.org
Subject: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Fri, 20 Jun 2008 17:34:40 +0200
[Message part 1 (text/plain, inline)]
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


[Message part 2 (text/plain, inline)]
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 <at> t-online.de>")
  bbdb-get-addresses(nil "stephen\\.berman <at> 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)
[Message part 3 (text/plain, inline)]

*** 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> 


Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#453; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #10 received at 453 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stephen Berman <stephen.berman <at> gmx.net>
Cc: 453 <at> debbugs.gnu.org
Subject: Re: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Tue, 26 Aug 2008 17:30:05 -0400
Sorry for the delay in replying.

> 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.

I don't see how rfc822-address-start could be nil.  The code sets it to
(point) just before the call to rfc822-bad-address.  Could you further
explain your reasoning?

  (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))))

(By the way, next time you mail a patch, please try not to change
whitespaces; that makes the patch very difficult to read.  Thanks.)




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#453; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Stephen Berman <stephen.berman <at> gmx.net>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #15 received at 453 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stephen Berman <stephen.berman <at> gmx.net>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: 453 <at> debbugs.gnu.org
Subject: Re: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Wed, 27 Aug 2008 12:38:05 +0200
On Tue, 26 Aug 2008 17:30:05 -0400 Chong Yidong <cyd <at> stupidchicken.com> wrote:

> Sorry for the delay in replying.
>
>> 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.
>
> I don't see how rfc822-address-start could be nil.  The code sets it to
> (point) just before the call to rfc822-bad-address.  Could you further
> explain your reasoning?

The error occurs before that setq can be called, because
rfc822-bad-address is also called from rfc822-nuke-whitespace, and at
this point rfc822-address-start is nil.  In more detail:

1. bbdb-rfc822-addresses is trying to parse this header:
   (""Groß, Werner"") <W.F.Gross <at> t-online.de>
   which presumably violates RFC822.
2. bbdb-rfc822-addresses calls rfc822-addresses, which turns the header
   into this string:
   (""Groß
   and, after let-binding but before setq-ing rfc822-address-start,
3. calls rfc822-nuke-whitespace, which further truncates the header to:
   (
   and then calls
4. rfc822-bad-address, which tries to call narrow-to-region with
   rfc822-address-start, which is still nil, as the beginning of the
   region: BZZT!

> (By the way, next time you mail a patch, please try not to change
> whitespaces; that makes the patch very difficult to read.  Thanks.)

Sorry.  That was the result of doing indent-region, which I assume means
the existing indentation does not conform to Emacs conventions.  Would
it be appropriate to submit a separate patch to correct that?

Steve Berman




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#453; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Chong Yidong <cyd <at> stupidchicken.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #20 received at 453 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stephen Berman <stephen.berman <at> gmx.net>
Cc: 453 <at> debbugs.gnu.org
Subject: Re: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Wed, 27 Aug 2008 10:38:24 -0400
Stephen Berman <stephen.berman <at> gmx.net> writes:

> 1. bbdb-rfc822-addresses is trying to parse this header:
>    (""Groß, Werner"") <W.F.Gross <at> t-online.de>
>    which presumably violates RFC822.
> 2. bbdb-rfc822-addresses calls rfc822-addresses, which turns the header
>    into this string:
>    (""Groß
>    and, after let-binding but before setq-ing rfc822-address-start,
> 3. calls rfc822-nuke-whitespace, which further truncates the header to:
>    (
>    and then calls
> 4. rfc822-bad-address, which tries to call narrow-to-region with
>    rfc822-address-start, which is still nil, as the beginning of the
>    region: BZZT!

Now I understand.  could you send a new patch?  Thanks.




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#453; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Stephen Berman <stephen.berman <at> gmx.net>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #25 received at 453 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stephen Berman <stephen.berman <at> gmx.net>
To: Chong Yidong <cyd <at> stupidchicken.com>
Cc: 453 <at> debbugs.gnu.org
Subject: Re: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Tue, 02 Sep 2008 18:07:57 +0200
On Wed, 27 Aug 2008 10:38:24 -0400 Chong Yidong <cyd <at> stupidchicken.com> wrote:

> Stephen Berman <stephen.berman <at> gmx.net> writes:
>
>> 1. bbdb-rfc822-addresses is trying to parse this header:
>>    (""Groß, Werner"") <W.F.Gross <at> t-online.de>
>>    which presumably violates RFC822.
>> 2. bbdb-rfc822-addresses calls rfc822-addresses, which turns the header
>>    into this string:
>>    (""Groß
>>    and, after let-binding but before setq-ing rfc822-address-start,
>> 3. calls rfc822-nuke-whitespace, which further truncates the header to:
>>    (
>>    and then calls
>> 4. rfc822-bad-address, which tries to call narrow-to-region with
>>    rfc822-address-start, which is still nil, as the beginning of the
>>    region: BZZT!
>
> Now I understand.  could you send a new patch?  Thanks.

I was going to just resend my patch minus the inappropriate white space
changes.  But upon reconsideration, I'm not confident that the patch I
sent previously DTRT.  I'm not even sure what TRT is here: as I wrote in
my OP, my patch returns an error string as specified by
rfc822-bad-address, but the caller bbdb-rfc822-addresses expects a list,
so it still raises a wrong-type error.  This happens when the relocated
catch sexp has scope to the end of the let that immediately encloses it
(patch (i) below).  But I leave the catch in its existing position and
move rfc822-nuke-whitespace to within it (patch (ii) below), then no
error is raised, but also there's no indication of a bad address; yet
stepping through the code with edebug does pass through
rfc822-bad-address.  So where should the catch be located?  Hopefully
someone familiar (unlike me) with RFC 822 and rfc822.el, and ideally
also bbdb-rfc822-addresses, can answer that question and say whether
either of these patches is suitable, or provide a better one.

Steve Berman

Patch (i) (returns an error string as specified by rfc822-bad-address,
but raises a wrong-type error with bbdb-rfc822-addresses):

*** emacs/lisp/mail/rfc822.el.~1.28.~	2008-05-06 17:54:09.000000000 +0200
--- emacs/lisp/mail/rfc822.el	2008-09-02 17:35:28.000000000 +0200
***************
*** 292,303 ****
  	  (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@;:\\.>)]")
--- 292,306 ----
  	  (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@;:\\.>)]")
***************
*** 306,318 ****
  			       (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)
--- 309,321 ----
  			       (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)

Patch (ii) (bbdb-rfc822-addresses raises no error, but also there's no
indication of a bad address; yet stepping through the code with edebug
does pass through rfc822-bad-address):

*** emacs/lisp/mail/rfc822.el.~1.28.~	2008-05-06 17:54:09.000000000 +0200
--- emacs/lisp/mail/rfc822.el	2008-09-02 18:01:49.000000000 +0200
***************
*** 293,312 ****
  	  (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)))
--- 293,313 ----
  	  (let ((list ())
  		tem
  		rfc822-address-start); this is for rfc822-bad-address
  	    (while (not (eobp))
  	      (setq rfc822-address-start (point))
  	      (setq tem
  		    (catch 'address ; this is for rfc822-bad-address
! 		      (progn
! 			(rfc822-nuke-whitespace)
! 			(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)))




Reply sent to Chong Yidong <cyd <at> stupidchicken.com>:
You have taken responsibility. Full text and rfc822 format available.

Notification sent to Stephen Berman <stephen.berman <at> gmx.net>:
bug acknowledged by developer. Full text and rfc822 format available.

Message #30 received at 453-done <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Chong Yidong <cyd <at> stupidchicken.com>
To: Stephen Berman <stephen.berman <at> gmx.net>
Cc: 453-done <at> debbugs.gnu.org
Subject: Re: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument error
Date: Wed, 24 Sep 2008 13:57:53 -0400
> Patch (i) (returns an error string as specified by rfc822-bad-address,
> but raises a wrong-type error with bbdb-rfc822-addresses):

I think this is the right approach; bbdb-rfc822-addresses should handle
the error.  I've checked in your patch, thanks.




bug archived. Request was from Debbugs Internal Request <don <at> donarmstrong.com> to internal_control <at> emacsbugs.donarmstrong.com. (Thu, 23 Oct 2008 14:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 16 years and 244 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.