[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>

はじめまして。横塚と申します。

16 messages 2013/01/29

[ruby-list:49130] Re: Net::Protocol#each_crlf_lineの正規表現にある n option は必要でしょうか

From: "NARUSE, Yui" <naruse@...>
Date: 2013-01-14 13:17:04 UTC
List: ruby-list #49130
成瀬です。

(2013/01/14 13:24), dezawa wrote:
> 今まで 1.8 で動かしていたメールを出すツールを1.9に移行していて引っかかっ
> ています。
> ...net/protocol.rb:313: warning: regexp match /.../n against to UTF-8 string
> 
> が出ます。
> 
> 理由は分かっていて、
> Content-Type: text/plain; charset= utf-8
> で生のUTFを使っているために、
> Net::Protocol#each_crlf_line の
>   while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
> 
> で怒られているわけです。
> 
> 確かにかっては ネットワーク上は7bitクリーンな情報に限られていましたから
> この n option の意図も分かるのですが、今ではそうではなくなっているのでこ
> のoptionをなくしてもらうことはできないでしょうか。
> なくすとなにか問題がありそうでしょうか?

ちょうど、同旨の指摘が [ruby-dev:46394] でもあって、r37487 で修正されました。
1.9.3 には backport されていなかったようなので、してもらうようにします。
おそらく次の patch release で直るでしょう。

-- 
NARUSE, Yui  <naruse@airemix.jp>

In This Thread

Prev Next