[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/emacs-24 r107962: Backport fix for Bug#1128
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/emacs-24 r107962: Backport fix for Bug#11282 from trunk |
Date: |
Fri, 04 May 2012 18:27:58 +0800 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 107962 [merge]
author: Kenichi Handa <address@hidden>
committer: Chong Yidong <address@hidden>
branch nick: emacs-24
timestamp: Fri 2012-05-04 18:27:58 +0800
message:
Backport fix for Bug#11282 from trunk
modified:
lisp/ChangeLog
lisp/mail/rmailmm.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2012-05-04 10:23:00 +0000
+++ b/lisp/ChangeLog 2012-05-04 10:26:36 +0000
@@ -3,6 +3,12 @@
* select.el (xselect--encode-string): Always use utf-8 for TEXT on
Nextstep.
+2012-05-03 Kenichi Handa <address@hidden>
+
+ * mail/rmailmm.el (rmail-show-mime): Catch an error caused by text
+ decoding, and show a warning message without signalling an error
+ (Bug#11282).
+
2012-04-30 Eli Zaretskii <address@hidden>
* mail/rmail.el (rmail-yank-current-message): Use the encoding of
=== modified file 'lisp/mail/rmailmm.el'
--- a/lisp/mail/rmailmm.el 2012-01-19 07:21:25 +0000
+++ b/lisp/mail/rmailmm.el 2012-05-04 10:26:36 +0000
@@ -1300,26 +1300,40 @@
(rmail-mime-mbox-buffer rmail-buffer)
(rmail-mime-view-buffer rmail-view-buffer)
(rmail-mime-coding-system nil))
+ ;; If ENTITY is not a vector, it is a string describing an error.
(if (vectorp entity)
(with-current-buffer rmail-mime-view-buffer
(erase-buffer)
- (rmail-mime-insert entity)
- (if (consp rmail-mime-coding-system)
- ;; Decoding is done by rfc2047-decode-region only for a
- ;; header. But, as the used coding system may have been
- ;; overridden by mm-charset-override-alist, we can't
- ;; trust (car rmail-mime-coding-system). So, here we
- ;; try the decoding again with mm-charset-override-alist
- ;; bound to nil.
- (let ((mm-charset-override-alist nil))
- (setq rmail-mime-coding-system
- (rmail-mime-find-header-encoding
- (rmail-mime-entity-header entity)))))
- (set-buffer-file-coding-system
- (if rmail-mime-coding-system
- (coding-system-base rmail-mime-coding-system)
- 'undecided)
- t t))
+ ;; This condition-case is for catching an error in the
+ ;; internal MIME decoding (e.g. incorrect BASE64 form) that
+ ;; may be signaled by rmail-mime-insert.
+ ;; FIXME: The current code doesn't set a proper error symbol
+ ;; in ERR. We must find a way to propagate a correct error
+ ;; symbol that is caused in the very deep code of text
+ ;; decoding (e.g. an error by base64-decode-region called by
+ ;; post-read-conversion function of utf-7).
+ (condition-case err
+ (progn
+ (rmail-mime-insert entity)
+ (if (consp rmail-mime-coding-system)
+ ;; Decoding is done by rfc2047-decode-region only for a
+ ;; header. But, as the used coding system may have been
+ ;; overridden by mm-charset-override-alist, we can't
+ ;; trust (car rmail-mime-coding-system). So, here we
+ ;; try the decoding again with mm-charset-override-alist
+ ;; bound to nil.
+ (let ((mm-charset-override-alist nil))
+ (setq rmail-mime-coding-system
+ (rmail-mime-find-header-encoding
+ (rmail-mime-entity-header entity)))))
+ (set-buffer-file-coding-system
+ (if rmail-mime-coding-system
+ (coding-system-base rmail-mime-coding-system)
+ 'undecided)
+ t t))
+ (error (setq entity (format "%s" err))))))
+ ;; Re-check ENTITY. It may be set to an error string.
+ (when (stringp entity)
;; Decoding failed. ENTITY is an error message. Insert the
;; original message body as is, and show warning.
(let ((region (with-current-buffer rmail-mime-mbox-buffer
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/emacs-24 r107962: Backport fix for Bug#11282 from trunk,
Chong Yidong <=