From: Tanaka Akira Date: 2007-09-20T14:12:43+09:00 Subject: [ruby-dev:31800] Re: RSTRING(value)->ptr == NULL ? In article <20070912164005.F6B9.TIETEW+RUBY-DEV@tietew.net>, Tietew writes: >> |RString::ptr が NULL な String をライブラリに渡した際に SEGV を >> |起こすことがあります。 >> >> |これは StringValue() しない idna.c が悪いんでしょうか。 >> >> できればそういいたいところです。話を聞かないでもないですが。 > > rubyforgeのidnにバグレポ出そうとして疑問に思ったんです。 > > こういう String を作る最小のコードは " ".chop.dup のようなので、 > ライブラリにこういう文字列を喰わせて落ちないかどうか確かめてみる > とか。 [ruby-core:1177] で似た指摘がされています。そのスレッドにお いてまつもとさんは [ruby-core:1185] で 1.8.0 には空文字列で も ptr は "" を指すようにすると発言しています。 また、1.9 では RSTRING_PTR(str) は " ".chop.dup は NULL にな りません。 そのうち Ruby 本体が変わって問題が無くなる一時的な話に対して ライブラリを修正させるのは無駄な労力で、あまり幸せな選択では 無いと感じます。 なお、[ruby-core:1185] と [ruby-dev:31778] の発言には食い違 いがありますが、よくあることです。私の推測としては、NULL に なっているのは単なる修正洩れである可能性が高いと思います。 -- [田中 哲][たなか あきら][Tanaka Akira]