[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:3016] portable dumper for Emacs 21.1



ABE Yasushi (阿部 靖司) <yasushi@xxxxxxxxx> writes:

> > 残念ながら私の環境では再現しないので阿部さんのところの問題は
> > わかりませんが、hoge C-j とやると Attempt to split
> > fixed-size window とでます。で、こいつは original の Emacs の
> > bug で以下の patch で直ります。CVS の Emacs でも直っていない
> > ようなので、誰か emacs-devel を追っている人が patch を投げて
> > くれると助かります。
> 
> 上の問題の確認ために、素のEmacs21.1をコンパイルしてhoge C-jを試しまし
> たが、きちんとbacktraceが表示されていましたが、別のところで問題があっ
> たりするんですか?

allocate_window では struct window の全ての field を
Lisp_Object と思って Qnil で初期化し、make_window では Qnil 
でない field を正しい値に初期化しなおします。C の厳密な規格
はよく知らないのですが、frozen_windows_start_p と
height_fixed_p は 1bit の field なので、適当に pad されて
memory 上では表現されているはずです。このときに、
height_fixed_p に該当する、Qnil で初期化された値の一部分が上
手く 0 を表してくれている保証はありません (のはず)。なので、
本来は陽に 0 に初期化する必要があるのです。

-- 
Yoshiki Hayashi