[ruby-trunk - Bug #7278][Open] 'warning: regexp match /./n against to UTF-8 string' in net/protocol

Issue #7278 has been reported by kakutani (Shintaro KAKUTANI).


Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。

Issue #7278 has been updated by no6v (Nobuhiro IMAI).

これだと 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
  •    while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
    
  •    @wbuf.each_line do |line|
         yield line.chomp("\n") + "\r\n"
       end
     end
    

Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。

Issue #7278 has been updated by mame (Yusuke E.).

Status changed from Open to Assigned
Assignee set to naruse (Yui NARUSE)

正確にはここは微妙にメンテナがいないのですが、近縁の net/http のメンテナ
かつ encoding がらみということで成瀬さんに振ってみます。

コード見ただけですが、破壊的に書き換えることでバッファ管理してる気配が
ありますので、each_line じゃダメな予感がします。

そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.
? の ? が足りない。


Yusuke E. [email protected]

Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Assigned
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。

Issue #7278 has been updated by kakutani (Shintaro KAKUTANI).

意図としてはeach_lineでも良さそうに見えますし、破壊しないほうが行儀は良さそう!


Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。

Issue #7278 has been updated by naruse (Yui NARUSE).

mame (Yusuke E.) wrote:

そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.
? の ? が足りない。

ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。

Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Assigned
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。

Issue #7278 has been updated by mame (Yusuke E.).

naruse (Yui NARUSE) wrote:

mame (Yusuke E.) wrote:

そもそもこの正規表現、間違ってる気がすごくします。
/\A.?(?:\n|\r\n|\r(?!\z))/ と書きたかったのではないかなあ。
.
? の ? が足りない。

ちなみに、この . は [^\n] のことなので、? はなくても大丈夫です。

“foo\rbar\r” を “foo” と “bar” に分けてほしいのではないかと。
実際、この正規表現が書かれた r5907 以前では \r で切れていたように読めます。
動かしてないので勘違いならすみません。


Yusuke E. [email protected]

Bug #7278: ‘warning: regexp match /…/n against to UTF-8 string’ in
net/protocol.rb

Author: kakutani (Shintaro KAKUTANI)
Status: Closed
Priority: Normal
Assignee: naruse (Yui NARUSE)
Category:
Target version:
ruby -v: 2.0.0dev

かくたにです。
UTF-8のメールをRails 3.2.8 のActionMailerから出そうとすると、
‘warning: regexp match /…/n against to UTF-8 string’ の警告が出ます。
添付のパッチではASCII-8BITにforce_encodingする方法にしてみました。

過去1ヶ月の間にもモンキーパッチでしのいでる方を複数見かけたので、対応いただければと思っております。
http://dev.ywesee.com/Yasu/20121012-create-fachinfo-chapter-exporter-job
http://d.hatena.ne.jp/benikujyaku/20111002/1317536555

よろしくお願いします。