[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 メーリングリストの案内