https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112012-11-05T12:05:06ZRuby Issue Tracking SystemBackport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=323602012-11-05T12:05:06Zno6v (Nobuhiro IMAI)nov@yo.rim.or.jp
<ul></ul><p>これだと yield される文字列のエンコーディングが ASCII-8BIT になってしまいますね。<br>
each_line でダメなケースってあるのかな。test/net/ 以下のテストは全部とおります。<br>
@wbuf を破壊しないことによる影響はちょっと分かりません。</p>
<p>diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb<br>
index 9733d56..743e59b 100644<br>
--- a/lib/net/protocol.rb<br>
+++ b/lib/net/protocol.rb<br>
@@ -322,7 +322,7 @@ module Net # :nodoc:</p>
<pre><code> def each_crlf_line(src)
buffer_filling(@wbuf, src) do
</code></pre>
<ul>
<li>
<pre><code> while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> @wbuf.each_line do |line|
yield line.chomp("\n") + "\r\n"
end
end
</code></pre>
</li>
</ul> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=323852012-11-05T19:23:32Zkakutani (Shintaro KAKUTANI)
<ul></ul><p>意図としてはeach_lineでも良さそうに見えますし、破壊しないほうが行儀は良さそう!</p> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=324342012-11-05T23:47:58Zmame (Yusuke Endoh)mame@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>naruse (Yui NARUSE)</i></li></ul><p>正確にはここは微妙にメンテナがいないのですが、近縁の net/http のメンテナ<br>
かつ encoding がらみということで成瀬さんに振ってみます。</p>
<p>コード見ただけですが、破壊的に書き換えることでバッファ管理してる気配が<br>
ありますので、each_line じゃダメな予感がします。</p>
<p>そもそもこの正規表現、間違ってる気がすごくします。<br>
/\A.<em>?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。<br>
.</em>? の ? が足りない。</p>
<p>--<br>
Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=324672012-11-06T14:28:30Znaruse (Yui NARUSE)naruse@airemix.jp
<ul></ul><p>mame (Yusuke Endoh) wrote:</p>
<blockquote>
<p>そもそもこの正規表現、間違ってる気がすごくします。<br>
/\A.<em>?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。<br>
.</em>? の ? が足りない。</p>
</blockquote>
<p>ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。</p> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=324682012-11-06T14:30:28Znaruse (Yui NARUSE)naruse@airemix.jp
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r37487.<br>
Shintaro, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<ul>
<li>lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):<br>
don't use /n in universal regexp. <a href="/issues/7278">[ruby-dev:46394]</a> [Bug <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rb (Closed)" href="https://bugs.ruby-lang.org/issues/7278">#7278</a>]</li>
</ul> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=324872012-11-06T20:13:26Zmame (Yusuke Endoh)mame@ruby-lang.org
<ul></ul><p>naruse (Yui NARUSE) wrote:</p>
<blockquote>
<p>mame (Yusuke Endoh) wrote:</p>
<blockquote>
<p>そもそもこの正規表現、間違ってる気がすごくします。<br>
/\A.<em>?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。<br>
.</em>? の ? が足りない。</p>
</blockquote>
<p>ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。</p>
</blockquote>
<p>"foo\rbar\r" を "foo" と "bar" に分けてほしいのではないかと。<br>
実際、この正規表現が書かれた r5907 以前では \r で切れていたように読めます。<br>
動かしてないので勘違いならすみません。</p>
<p>--<br>
Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a></p> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=354072013-01-14T22:16:12Znaruse (Yui NARUSE)naruse@airemix.jp
<ul><li><strong>Tracker</strong> changed from <i>Bug</i> to <i>Backport</i></li><li><strong>Project</strong> changed from <i>Ruby master</i> to <i>Backport193</i></li><li><strong>Status</strong> changed from <i>Closed</i> to <i>Assigned</i></li><li><strong>Assignee</strong> changed from <i>naruse (Yui NARUSE)</i> to <i>usa (Usaku NAKAMURA)</i></li></ul> Backport193 - Backport #7278: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rbhttps://bugs.ruby-lang.org/issues/7278?journal_id=354302013-01-15T16:23:50Zusa (Usaku NAKAMURA)usa@garbagecollect.jp
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li></ul><p>This issue was solved with changeset r38830.<br>
Shintaro, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<p>merge revision(s) 37487,37563: [Backport <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport: 'warning: regexp match /.../n against to UTF-8 string' in net/protocol.rb (Closed)" href="https://bugs.ruby-lang.org/issues/7278">#7278</a>]</p>
<pre><code>* lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
don't use /n in universal regexp. <a href="/issues/7278">[ruby-dev:46394]</a> [Bug #7278]
* lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
treat \r as newline as mame pointed. <a href="/issues/7278">[ruby-dev:46425]</a> [Bug #7278]
</code></pre>