bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#453: marked as done (23.0.60; rfc822-bad-address: wrong-type-argume


From: Emacs bug Tracking System
Subject: bug#453: marked as done (23.0.60; rfc822-bad-address: wrong-type-argument error)
Date: Wed, 24 Sep 2008 11:05:07 -0700

Your message dated Wed, 24 Sep 2008 13:57:53 -0400
with message-id <address@hidden>
and subject line Re: bug#453: 23.0.60; rfc822-bad-address: wrong-type-argument 
error
has caused the Emacs bug report #453,
regarding 23.0.60; rfc822-bad-address: wrong-type-argument error
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact address@hidden
immediately.)


-- 
453: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=453
Emacs Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 23.0.60; rfc822-bad-address: wrong-type-argument error Date: Fri, 20 Jun 2008 17:34:40 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)
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


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\"\") <address@hidden>")
  bbdb-get-addresses(nil "address@hidden" 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)

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


--- End Message ---
--- Begin Message --- 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.


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]