まつもと ゆきひろです

In message "Re: [ruby-dev:40939] Re: [Bug:trunk] Dir.[] returns unmatched path"
    on Fri, 9 Apr 2010 19:08:26 +0900, Masaya TARUI <tarui / prx.jp> writes:

|元をたどればpush_glob関数内でRSTRING_PTR(str)を渡しているのに、
|strがGCでmarkされずに回収されるためなので、
|
|以下のpatch(IRCで教えてもらったpatchですが)で直る事を確認しました。

ありがとうございます。些細な改善と言えば RB_GC_GUARD を先にお
いておけば、ret に戻り値を保存する必要はないように思います。

つまり

    RB_GC_GUARD(str);
    return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE,
                            rb_glob_caller, (VALUE)&args, enc);

ということ。