changeset 69640:69cdb1e84c38

(rfc2231-decode-encoded-string): Work on unibyte buffer and then decode the buffer text if necessary. (rfc2231-encode-string): Be sure to work on multibyte buffer at first, and after mm-encode-body, change the buffer to unibyte.
author Kenichi Handa <handa@m17n.org>
date Thu, 23 Mar 2006 05:51:03 +0000
parents 5124de9058c1
children f3cbe79b8375
files lisp/gnus/rfc2231.el
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/rfc2231.el	Thu Mar 23 01:20:20 2006 +0000
+++ b/lisp/gnus/rfc2231.el	Thu Mar 23 05:51:03 2006 +0000
@@ -227,7 +227,7 @@
   (let ((coding-system (mm-charset-to-coding-system (match-string 2 string)))
 	;;(language (match-string 3 string))
 	(value (match-string 4 string)))
-    (mm-with-multibyte-buffer
+    (mm-with-unibyte-buffer
       (insert value)
       (goto-char (point-min))
       (while (search-forward "%" nil t)
@@ -236,9 +236,9 @@
 	     (string-to-number (buffer-substring (point) (+ (point) 2)) 16)
 	   (delete-region (1- (point)) (+ (point) 2)))))
       ;; Decode using the charset, if any.
-      (unless (memq coding-system '(nil ascii))
-	(mm-decode-coding-region (point-min) (point-max) coding-system))
-      (buffer-string))))
+      (if (memq coding-system '(nil ascii))
+	  (buffer-string)
+	(mm-decode-coding-string (buffer-string) coding-system)))))
 
 (defun rfc2231-encode-string (param value)
   "Return and PARAM=VALUE string encoded according to RFC2231.
@@ -252,7 +252,7 @@
 	;; Don't make lines exceeding 76 column.
 	(limit (- 74 (length param)))
 	spacep encodep charsetp charset broken)
-    (with-temp-buffer
+    (mm-with-multibyte-buffer
       (insert value)
       (goto-char (point-min))
       (while (not (eobp))
@@ -268,6 +268,7 @@
 	(forward-char 1))
       (when charsetp
 	(setq charset (mm-encode-body)))
+      (set-buffer-multibyte nil)
       (cond
        ((or encodep charsetp
 	    (progn