[mew-dist 24040] Re: `Wrong type argument' when sending & burst

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2003年 9月 30日 (火) 16:08:49 JST


From: Norihiro Okada <okada at example.com> さん曰く
Subject: [mew-dist 24039] `Wrong type argument' when sending & burst
Message-ID: <20030930.142152.216711832.1004 at example.com>
Date: Tue, 30 Sep 2003 14:21:52 +0900 (JST)

> いつの頃からか、送信時に時々、
> 
>     Wrong type argument: integer-or-marker-p, "touched by Mew."
> 
> の *ような* エラーが発生するようになりました。とは言え、毎回
> 発生する訳ではないため、原因というか、何がトリガーになってい
> るかわかっておりません。

なんでこうなるのかはまったく不明ですが、

> Burst 時の backtrace は
> ------------------------------------------------------------
> Signaling: (wrong-type-argument integer-or-marker-p "touched by Mew.")
>   insert-buffer-substring(#<buffer " *temp*"> "touched by Mew." nil)
>   write-region("touched by Mew." nil "/export/home/okada/Mail/inbox/.mew-mtime" nil no-msg)
>   mew-touch-folder("+inbox")

>     xemacs-21.4.14

XEmacs-21.4.14 のバグだと思われます。code-files.el の
write-region() をみると、'pre-write-conversion を必要な
coding-system と判定されると、こいつにぶちあたります。

例えば、こんなの

(let ((coding-system-for-write 'hz-gb-2312))
  (write-region "hoge" nil "/tmp/hoge" nil 'nomsg))

だと確実にエラーになります。
解決策は

--- code-files.el.orig	Wed May  1 01:05:34 2002
+++ code-files.el	Tue Sep 30 15:50:49 2003
@@ -533,7 +533,9 @@
 		(save-excursion
 		  (set-buffer tempbuf)
 		  (erase-buffer)
-		  (insert-buffer-substring curbuf start end)
+		  (if (stringp start)
+		      (insert start)
+		    (insert-buffer-substring curbuf start end))
 		  (funcall func (point-min) (point-max))
 		  (write-region-internal (point-min) (point-max) filename
 					 append

をあててダンプのやりなおしかなぁ。。。

上のパッチ、なにか違っているような気もするのですが、XEmacs には
愛情が感じられないのでこれにて勘弁です。

# なんで、pre-write-conversion が召喚されるのかはまったく不明。
# なにかマニアックな ^^; coding-system 使っていますか?

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内