Additional fix for rfc822-addresses (Bug#5692).
* mail/rfc822.el (rfc822-addresses): Use nested catches to ensure that all errors are caught, and that the return value is always a list (Bug#5692).
This commit is contained in:
parent
f7e0618c13
commit
4e7cafbe33
2 changed files with 36 additions and 26 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-03-08 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* mail/rfc822.el (rfc822-addresses): Use nested catches to ensure
|
||||
that all errors are caught, and that the return value is always a
|
||||
list (Bug#5692).
|
||||
|
||||
2010-03-08 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* language/misc-lang.el (windows-1256): New coding system.
|
||||
|
|
|
@ -290,32 +290,36 @@
|
|||
(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)))
|
||||
(rfc822-nuke-whitespace)
|
||||
(while (not (eobp))
|
||||
(setq rfc822-address-start (point))
|
||||
(setq tem
|
||||
(cond ((rfc822-looking-at ?\,)
|
||||
nil)
|
||||
((looking-at "[][\000-\037@;:\\.>)]")
|
||||
(forward-char)
|
||||
(catch 'address ; this is for rfc822-bad-address
|
||||
(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)))
|
||||
;; Give `rfc822-address-start' a non-nil initial value to
|
||||
;; prevent `rfc822-bad-address' from raising a
|
||||
;; `wrong-type-argument' error.
|
||||
(let* ((rfc822-address-start (point))
|
||||
list tem
|
||||
(err
|
||||
(catch 'address
|
||||
;; Note that `rfc822-nuke-whitespace' and
|
||||
;; `rfc822-looking-at' can throw.
|
||||
(rfc822-nuke-whitespace)
|
||||
(while (not (eobp))
|
||||
(setq rfc822-address-start (point))
|
||||
(setq tem
|
||||
(cond ((rfc822-looking-at ?\,)
|
||||
nil)
|
||||
((looking-at "[][\000-\037@;:\\.>)]")
|
||||
(forward-char)
|
||||
(catch 'address ; For rfc822-bad-address
|
||||
(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)))))
|
||||
nil)))
|
||||
(nreverse (append (if err (list err)) list))))
|
||||
(and buf (kill-buffer buf))))))
|
||||
|
||||
(provide 'rfc822)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue