Backport #7278
closed
これだと yield される文字列のエンコーディングが ASCII-8BIT になってしまいますね。
each_line でダメなケースってあるのかな。test/net/ 以下のテストは全部とおります。
@wbuf を破壊しないことによる影響はちょっと分かりません。
diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb
index 9733d56..743e59b 100644
--- a/lib/net/protocol.rb
+++ b/lib/net/protocol.rb
@@ -322,7 +322,7 @@ module Net # :nodoc:
def each_crlf_line(src)
buffer_filling(@wbuf, src) do
意図としてはeach_lineでも良さそうに見えますし、破壊しないほうが行儀は良さそう!
- Status changed from Open to Assigned
- Assignee set to naruse (Yui NARUSE)
正確にはここは微妙にメンテナがいないのですが、近縁の net/http のメンテナ
かつ encoding がらみということで成瀬さんに振ってみます。
コード見ただけですが、破壊的に書き換えることでバッファ管理してる気配が
ありますので、each_line じゃダメな予感がします。
そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.? の ? が足りない。
--
Yusuke Endoh mame@tsg.ne.jp
mame (Yusuke Endoh) wrote:
そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.? の ? が足りない。
ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37487.
Shintaro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
don't use /n in universal regexp. [ruby-dev:46394] [Bug #7278]
naruse (Yui NARUSE) wrote:
mame (Yusuke Endoh) wrote:
そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.? の ? が足りない。
ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。
"foo\rbar\r" を "foo" と "bar" に分けてほしいのではないかと。
実際、この正規表現が書かれた r5907 以前では \r で切れていたように読めます。
動かしてないので勘違いならすみません。
--
Yusuke Endoh mame@tsg.ne.jp
- Tracker changed from Bug to Backport
- Project changed from Ruby master to Backport193
- Status changed from Closed to Assigned
- Assignee changed from naruse (Yui NARUSE) to usa (Usaku NAKAMURA)
- Status changed from Assigned to Closed
This issue was solved with changeset r38830.
Shintaro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
merge revision(s) 37487,37563: [Backport #7278]
* lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
don't use /n in universal regexp. [ruby-dev:46394] [Bug #7278]
* lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0Like0