[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

XEmacs bug



* 開発者のみなさま、とりわけ shimbun の各プログラムの作者の *
* みなさんに緊急で見直しをお願いします。                    *

今日、土屋さんとの個人的なやりとりを通じて XEmacs の bytecomp に
バグがあることが発覚しました。それは、以下のように文字列だけをボ
ディに持つ関数を byte-compile すると、戻り値が nil になってしま
うというものです。

(defun hello-world ()
  "Hello World")
 => hello-world

(hello-world)
 => "Hello World"

(byte-compile 'hello-world)
 => #<compiled-function nil "...(2)" [nil] 1 "Hello World">

(hello-world)
 => nil

つまり、bytecomp はボディの最初に現れた文字列を、doc-string とし
て扱ってしまうのです。

そんなものは滅多にないだろうって?  いえいえ、結構あるんですよ。
すでに土屋さんが sb-asahi と sb-yomiuri については対策してくれま
したが、例えばちょっと前まであった以下のコードは

(luna-define-method shimbun-server-name ((shimbun shimbun-asahi))
  "朝日新聞")

次のような関数を提供します。

(lambda (shimbun)
  "朝日新聞")

これが byte-compile されると、前述のバグのために、ぼくが XEmacs
で読む朝日の記事の From 行には、社名の代わりに nil が表示されて
いたのでした。

この問題に関係しそうな個所は、ぼくが調べたところでは、1_3 枝、幹
ともに以下の 6点でした。とりあえず、これらについて改修をお願いし
ます。

sb-dennou.el: (luna-define-method shimbun-reply-to ... "pc3s-nnb@asahi-net.or.jp")
sb-pilot-mailsync.el: (luna-define-method shimbun-reply-to ... "pilot-mailsync@pilot-mailsync.sourcefubar.net")
sb-pocketgames.el: (luna-define-method shimbun-reply-to ... "info@pocketgames.jp")
sb-security-memo.el: (luna-define-method shimbun-reply-to ... "memo@memo.st.ryukoku.ac.jp")
sb-w3m-dev.el: (luna-define-method shimbun-reply-to ... "w3m-dev@mi.med.tohoku.ac.jp")
shimbun.el: (luna-define-method shimbun-footer ... "")
-- 
Katsumi Yamaoka <yamaoka@namazu.org>