From: Tomoyuki Chikanaga Date: 2010-11-04T23:11:27+09:00 Subject: [ruby-dev:42538] [Ruby 1.9-Bug#4024][Open] IO#readlines(0) never return --mimepart_4cd2be7914537_eedca5344c311b6 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4024: IO#readlines(0) never return http://redmine.ruby-lang.org/issues/show/4024 起票者: Tomoyuki Chikanaga ステータス: Open, 優先度: Normal カテゴリ: core ruby -v: ruby 1.9.3dev (2010-11-04 trunk 29690) [x86_64-darwin10.4.0] 1.9.2 および trunk で IO#readlines の引数に 0 を渡すと無限ループ状態になり処理がかえってこなくなります。 IO#each_line も同様に "" を yield し続けます。 (via http://twitter.com/#!/watson1978/status/29656929210) readlines/each_line で limit に 0 が渡された時は例外にするのが良いのではないでしょうか。 パッチを添付します。 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cd2be7914537_eedca5344c311b6 Content-Type: application/octet-stream; name=io_readlines.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=io_readlines.patch SW5kZXg6IGlvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW8uYwko cmV2aXNpb24gMjk2OTApCisrKyBpby5jCSh3b3JraW5nIGNvcHkpCkBAIC0y NzI0LDYgKzI3MjQsOCBAQAogICAgIGxvbmcgbGltaXQ7CiAKICAgICBwcmVw YXJlX2dldGxpbmVfYXJncyhhcmdjLCBhcmd2LCAmcnMsICZsaW1pdCwgaW8p OworICAgIGlmIChsaW1pdCA9PSAwKSAKKwlyYl9yYWlzZShyYl9lQXJnRXJy b3IsICJpbnZhbGlkIGxpbWl0OiAwIGZvciByZWFkbGluZXMiKTsKICAgICBh cnkgPSByYl9hcnlfbmV3KCk7CiAgICAgd2hpbGUgKCFOSUxfUChsaW5lID0g cmJfaW9fZ2V0bGluZV8xKHJzLCBsaW1pdCwgaW8pKSkgewogCXJiX2FyeV9w dXNoKGFyeSwgbGluZSk7CkBAIC0yNzczLDYgKzI3NzUsOCBAQAogCiAgICAg UkVUVVJOX0VOVU1FUkFUT1IoaW8sIGFyZ2MsIGFyZ3YpOwogICAgIHByZXBh cmVfZ2V0bGluZV9hcmdzKGFyZ2MsIGFyZ3YsICZycywgJmxpbWl0LCBpbyk7 CisgICAgaWYgKGxpbWl0ID09IDApIAorCXJiX3JhaXNlKHJiX2VBcmdFcnJv ciwgImludmFsaWQgbGltaXQ6IDAgZm9yIGVhY2hfbGluZSIpOwogICAgIHdo aWxlICghTklMX1Aoc3RyID0gcmJfaW9fZ2V0bGluZV8xKHJzLCBsaW1pdCwg aW8pKSkgewogCXJiX3lpZWxkKHN0cik7CiAgICAgfQpJbmRleDogdGVzdC9y dWJ5L3Rlc3RfaW8ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVz dC9ydWJ5L3Rlc3RfaW8ucmIJKHJldmlzaW9uIDI5NjkwKQorKysgdGVzdC9y dWJ5L3Rlc3RfaW8ucmIJKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsNCArMTcw MiwyNCBAQAogICAgICAgR0Muc3RhcnQKICAgICBlbmQKICAgZW5kCisKKyAg ZGVmIHRlc3RfcmVhZGxpbmVzX2xpbWl0XzAKKyAgICBidWd4eHggPSAiW3J1 YnktZGV2Onh4eF0iCisgICAgdCA9IG1ha2VfdGVtcGZpbGUKKyAgICBhc3Nl cnRfcmFpc2UoQXJndW1lbnRFcnJvciwgYnVneHh4KSBkbworICAgICAgb3Bl bih0LnBhdGgsICJyIikgZG8gfGlvfAorICAgICAgICBpby5yZWFkbGluZXMo MCkKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKworICBkZWYgdGVzdF9l YWNoX2xpbmVfbGltaXRfMAorICAgIGJ1Z3h4eCA9ICJbcnVieS1kZXY6eHh4 XSIKKyAgICB0ID0gbWFrZV90ZW1wZmlsZQorICAgIGFzc2VydF9yYWlzZShB cmd1bWVudEVycm9yLCBidWd4eHgpIGRvCisgICAgICBvcGVuKHQucGF0aCwg InIiKSBkbyB8aW98CisgICAgICAgIGlvLmVhY2hfbGluZSgwKS5uZXh0Cisg ICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCiBlbmQK --mimepart_4cd2be7914537_eedca5344c311b6--