mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an error when a multipa...
authorKenichi Handa <handa@m17n.org>
Wed, 23 Feb 2011 02:32:35 +0000 (11:32 +0900)
committerKenichi Handa <handa@m17n.org>
Wed, 23 Feb 2011 02:32:35 +0000 (11:32 +0900)
lisp/ChangeLog
lisp/mail/rmailmm.el

index a70330d..7501051 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-23  Kenichi Handa  <handa@m17n.org>
+
+       * mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an
+       error when a multipart boundary in the nested multipart is found.
+
 2011-02-22  Kenichi Handa  <handa@m17n.org>
 
        * mail/rmail.el (rmail-start-mail): Decode "encoded-words" of
index e44dd87..4aa3e81 100644 (file)
@@ -852,28 +852,33 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
            ((looking-at "[ \t]*\n")
             (setq next (copy-marker (match-end 0) t)))
            (t
-            (rmail-mm-get-boundary-error-message
-             "Malformed boundary" content-type content-disposition
-             content-transfer-encoding)))
-
-      (setq index (1+ index))
-      ;; Handle the part.
-      (if parse-tag
+            ;; The original code signalled an error as below, but
+            ;; this line may be a boundary of nested multipart.  So,
+            ;; we just set `next' to nil to skip this line
+            ;; (rmail-mm-get-boundary-error-message
+            ;;  "Malformed boundary" content-type content-disposition
+            ;;  content-transfer-encoding)
+            (setq next nil)))
+
+      (when next
+       (setq index (1+ index))
+       ;; Handle the part.
+       (if parse-tag
+           (save-restriction
+             (narrow-to-region beg end)
+             (let ((child (rmail-mime-process
+                           nil (format "%s/%d" parse-tag index)
+                           content-type content-disposition)))
+               ;; Display a tagline.
+               (aset (aref (rmail-mime-entity-display child) 1) 1
+                     (aset (rmail-mime-entity-tagline child) 2 t))
+               (push child entities)))
+
+         (delete-region end next)
          (save-restriction
            (narrow-to-region beg end)
-           (let ((child (rmail-mime-process
-                         nil (format "%s/%d" parse-tag index)
-                         content-type content-disposition)))
-             ;; Display a tagline.
-             (aset (aref (rmail-mime-entity-display child) 1) 1
-                   (aset (rmail-mime-entity-tagline child) 2 t))
-             (push child entities)))
-
-       (delete-region end next)
-       (save-restriction
-         (narrow-to-region beg end)
-         (rmail-mime-show)))
-      (goto-char (setq beg next)))
+           (rmail-mime-show)))
+       (goto-char (setq beg next))))
 
     (when parse-tag
       (setq entities (nreverse entities))