なかだです。

At Sat, 28 Apr 2001 00:08:13 +0900,
Akinori MUSHA <knu / iDaemons.org> wrote:
>  vim6 の ruby-interp ですが、 :rubydo で $_ に String 以外の
> オブジェクトをセットするとコアを吐いて vim6 ごと死ぬという問題が
> あるようです。(:rubydo $_ = 0 等)

  どういうタイミングで死ぬんでしょうか。

+	if (!NIL_P(line)) {
+	    ml_replace(i, (char_u *) STR2CSTR(line), 1);

  String 以外でというと ex_rubydo()のこの STR2CSTR()がくさいよ
うな気がします。ml_replace() の仕様を知らないので外してたらすい
ませんが、第二引数の文字列をコピーせずにポインタをずっと持って
いるんだとしたら、ここは strdup() かなにかすべきだと思います。
line が String だとしても、$_ を変更した時点で GC される可能性
がありますから、やはりまずいはずです。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦