]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle successive mime sections in decoding.
authorMatt Armstrong <matt@rfc20.org>
Fri, 7 Oct 2022 12:17:50 +0000 (08:17 -0400)
committerRichard Stallman <rms@gnu.org>
Fri, 7 Oct 2022 12:17:50 +0000 (08:17 -0400)
rmailsum.el (rmail-epa-decode):Handle blank lines at start.
Handle both ending delim and another starting delim.

lisp/mail/rmail.el

index 812e9a201b2f35c0abdc08b16f1683a8715a2fd3..f095d5e9c08ee825d97066336968b45b63276f4a 100644 (file)
@@ -4693,15 +4693,23 @@ Argument MIME is non-nil if this is a mime message."
   (save-excursion
     (goto-char (point-min))
     (while (re-search-forward "--------------[0-9a-zA-Z]+\n" nil t)
-      (let ((delim (concat (substring (match-string 0) 0 -1) "--\n")))
+      ;; The ending delimiter is a start delimiter if another section follows.
+      ;; Otherwise it is an end delimiter, with -- affixed.
+      (let ((delim (concat (substring (match-string 0) 0 -1) "\\(\\|--\\)\n")))
         (when (looking-at "\
 Content-Type: text/[a-z]+; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: base64\n")
           (goto-char (match-end 0))
+          ;; Sometimes the attachment's headers are followed by blank lines
+          (while (eolp)
+            (forward-line 1))
           (let ((start (point))
                 (inhibit-read-only t))
-            (search-forward delim)
+            (re-search-forward delim)
             (forward-line -1)
+            ;; Sometimes the attachment's contents are followed by blank lines
+            (while (save-excursion (forward-line -1) (eolp))
+              (forward-line -1))
             (base64-decode-region start (point))
             (forward-line 1)))))))
 \f