Segmentation fault when File.open

向井と申します。

次のようにプログラムを実行すると ruby (1.9系)が落ちます。わたしの環境で
は ruby が停止しなくなったので(sigintも効かない)大変かもしれません。
gdb 内では適切に途中で異常に遭遇します。
ruby -e ‘File.read(“empty”, nil, nil, {})’

% ruby -v
ruby 1.9.0 (2008-01-11 revision 0) [i686-darwin8.11.1]

実際にわたしが最初に遭遇したのはハッシュに間違ったキーを与えてエラーに
ãªã‚‹ã¨ã„ã†å ´åˆã§ã—ãŸãŒã€ãã®ç™ºç”Ÿæ¡ä»¶ç­‰ã‚’èª¿ã¹ã¦ã„ã‚‹ã†ã¡ã«å˜ãªã‚‹ç©ºã®ãƒãƒƒ
シュでも同じようになることに気付きました。

ちょっと見てみましたが open_key_args ã§ã¯å¼•æ•°ã®ãƒãƒƒã‚·ãƒ¥ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ
には有効なオプションがすくなくともひとつは与えられているという前提になっ
ã¦ã„ã¦ã€ãã†ã§ãªã„å ´åˆã«ã¯ã¾ã£ãŸããƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ã‹ãšã«å‡¦ç†ã‚’çµ‚ãˆã¦ã„ã¾ã™ã€‚

ということなので次のような簡単なパッチで直ると思いますが、いかがでしょ
うか。ただし、空のハッシュや有効なオプションが存在しないというのはイレ
ギュラーなケースなので、warning を出すか例外を投げる方が親切かもしれま
せん。