Forum: Ruby-dev [ruby-trunk - Bug #8698][Open] レシーバに不正なバイト列が含まれている場合にString#each lineや#linesの挙動が引数の有無で変わってしまう

C042517d59bed4761cc88681bf71fca8?d=identicon&s=25 Glass_saga (Masaki Matsushita) (Guest)
on 2013-07-28 10:15
(Received via mailing list)
Issue #8698 has been reported by Glass_saga (Masaki Matsushita).

----------------------------------------
Bug #8698:
レシーバに不正なバイト列が含まれている場合にString#each_lineや#linesの挙動が引数の有無で変わってしまう
https://bugs.ruby-lang.org/issues/8698

Author: Glass_saga (Masaki Matsushita)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-07-28 trunk 42211) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


String#each_lineや#linesは、レシーバに不正なバイト列が含まれている場合に引数無しで呼ばれると例外を発生させませんが、
引数を与えると例外を発生させます。

invalid_str = "\x80" * 3
invalid_str.each_line {} # no error
invalid_str.each_line("foo") {} # invalid byte sequence in UTF-8
(ArgumentError)

invalid_str.lines # no error
invalid_str.lines("foo") # # invalid byte sequence in UTF-8
(ArgumentError)

レシーバに不正なバイト列が含まれている場合の挙動が引数の有無で変わってしまうというのは、仕様のバグではないでしょうか。
String#each_lineや#linesは引数を渡さずに使われる場合が多いと思うので、そちらの挙動に寄せて
「String#each_lineや#linesはレシーバに不正なバイト列が含まれていても例外を発生させない」という仕様に統一する事を提案します。

添付のpatchは引数の有無に関わらずrb_memsearch()を使って検索を行う事で上記の仕様に統一したもので、[Feature
#7368]で提案している
patch3.diffに少し手を加えたものです。また、test/ruby/test_m17n_comb.rbに引数を与えて#each_lineを呼ぶと例外が発生する事を期待している
テストがあるので、その部分を削っています。
C4e88907313843cf07f6d85ba8162120?d=identicon&s=25 ko1 (Koichi Sasada) (Guest)
on 2013-08-09 12:33
(Received via mailing list)
Issue #8698 has been updated by ko1 (Koichi Sasada).

Assignee set to naruse (Yui NARUSE)


----------------------------------------
Bug #8698:
レシーバに不正なバイト列が含まれている場合にString#each_lineや#linesの挙動が引数の有無で変わってしまう
https://bugs.ruby-lang.org/issues/8698#change-41023

Author: Glass_saga (Masaki Matsushita)
Status: Open
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-07-28 trunk 42211) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


String#each_lineや#linesは、レシーバに不正なバイト列が含まれている場合に引数無しで呼ばれると例外を発生させませんが、
引数を与えると例外を発生させます。

invalid_str = "\x80" * 3
invalid_str.each_line {} # no error
invalid_str.each_line("foo") {} # invalid byte sequence in UTF-8
(ArgumentError)

invalid_str.lines # no error
invalid_str.lines("foo") # # invalid byte sequence in UTF-8
(ArgumentError)

レシーバに不正なバイト列が含まれている場合の挙動が引数の有無で変わってしまうというのは、仕様のバグではないでしょうか。
String#each_lineや#linesは引数を渡さずに使われる場合が多いと思うので、そちらの挙動に寄せて
「String#each_lineや#linesはレシーバに不正なバイト列が含まれていても例外を発生させない」という仕様に統一する事を提案します。

添付のpatchは引数の有無に関わらずrb_memsearch()を使って検索を行う事で上記の仕様に統一したもので、[Feature
#7368]で提案している
patch3.diffに少し手を加えたものです。また、test/ruby/test_m17n_comb.rbに引数を与えて#each_lineを呼ぶと例外が発生する事を期待している
テストがあるので、その部分を削っています。
9361878d459f1709feec780518946ee5?d=identicon&s=25 naruse (Yui NARUSE) (Guest)
on 2013-09-17 09:38
(Received via mailing list)
Issue #8698 has been updated by naruse (Yui NARUSE).

Status changed from Open to Assigned


----------------------------------------
Bug #8698:
レシーバに不正なバイト列が含まれている場合にString#each_lineや#linesの挙動が引数の有無で変わってしまう
https://bugs.ruby-lang.org/issues/8698#change-41860

Author: Glass_saga (Masaki Matsushita)
Status: Assigned
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-07-28 trunk 42211) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


String#each_lineや#linesは、レシーバに不正なバイト列が含まれている場合に引数無しで呼ばれると例外を発生させませんが、
引数を与えると例外を発生させます。

invalid_str = "\x80" * 3
invalid_str.each_line {} # no error
invalid_str.each_line("foo") {} # invalid byte sequence in UTF-8
(ArgumentError)

invalid_str.lines # no error
invalid_str.lines("foo") # # invalid byte sequence in UTF-8
(ArgumentError)

レシーバに不正なバイト列が含まれている場合の挙動が引数の有無で変わってしまうというのは、仕様のバグではないでしょうか。
String#each_lineや#linesは引数を渡さずに使われる場合が多いと思うので、そちらの挙動に寄せて
「String#each_lineや#linesはレシーバに不正なバイト列が含まれていても例外を発生させない」という仕様に統一する事を提案します。

添付のpatchは引数の有無に関わらずrb_memsearch()を使って検索を行う事で上記の仕様に統一したもので、[Feature
#7368]で提案している
patch3.diffに少し手を加えたものです。また、test/ruby/test_m17n_comb.rbに引数を与えて#each_lineを呼ぶと例外が発生する事を期待している
テストがあるので、その部分を削っています。
9361878d459f1709feec780518946ee5?d=identicon&s=25 naruse (Yui NARUSE) (Guest)
on 2013-09-17 09:46
(Received via mailing list)
Issue #8698 has been updated by naruse (Yui NARUSE).

Assignee changed from naruse (Yui NARUSE) to Glass_saga (Masaki
Matsushita)

コミットして下さい
----------------------------------------
Bug #8698:
レシーバに不正なバイト列が含まれている場合にString#each_lineや#linesの挙動が引数の有無で変わってしまう
https://bugs.ruby-lang.org/issues/8698#change-41861

Author: Glass_saga (Masaki Matsushita)
Status: Assigned
Priority: Normal
Assignee: Glass_saga (Masaki Matsushita)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-07-28 trunk 42211) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


String#each_lineや#linesは、レシーバに不正なバイト列が含まれている場合に引数無しで呼ばれると例外を発生させませんが、
引数を与えると例外を発生させます。

invalid_str = "\x80" * 3
invalid_str.each_line {} # no error
invalid_str.each_line("foo") {} # invalid byte sequence in UTF-8
(ArgumentError)

invalid_str.lines # no error
invalid_str.lines("foo") # # invalid byte sequence in UTF-8
(ArgumentError)

レシーバに不正なバイト列が含まれている場合の挙動が引数の有無で変わってしまうというのは、仕様のバグではないでしょうか。
String#each_lineや#linesは引数を渡さずに使われる場合が多いと思うので、そちらの挙動に寄せて
「String#each_lineや#linesはレシーバに不正なバイト列が含まれていても例外を発生させない」という仕様に統一する事を提案します。

添付のpatchは引数の有無に関わらずrb_memsearch()を使って検索を行う事で上記の仕様に統一したもので、[Feature
#7368]で提案している
patch3.diffに少し手を加えたものです。また、test/ruby/test_m17n_comb.rbに引数を与えて#each_lineを呼ぶと例外が発生する事を期待している
テストがあるので、その部分を削っています。
This topic is locked and can not be replied to.