From: "NARUSE, Yui" Date: 2008-10-20T03:24:07+09:00 Subject: [ruby-dev:36795] Re: [Bug #650] Marshal.load raises RegexpError 成瀬です。 On Sun, 19 Oct 2008 02:13:16 +0900, Urabe Shyouhei wrote: > 卜部です。 > > Yukihiro Matsumoto さんは書きました: >> (1) 杓子定規に考えて、メジャーバージョンをあげる(1.8と1.9が >> 通信できなくなる、うれしくない) >> >> (2) ささいな違いなので気にしない >> >> (3) 1.8で正規化する(すでに書き込んだデータは救済できないし、 >> 副作用もある) >> >> (4) 1.9側に1.8正規表現かどうか判別して1.9正規表現に変換する >> (おそらくは巨大な)ルーチンを追加する(苦労の割に得るもの >> が少ない、うれしくない) >> > > (5) 1.9でRegexp#_dumpとRegexp#_loadを定義する > ってのはどうでしょうね。すると > * TYPE_REGEXPなデータは1.8のRegexp > * TYPE_USERDEFなデータ(でklass==rb_cRegexp)は1.9のRegexp > という割と簡単な判定でいけそうな気がするんですが。 > > > # おもいつきレベルだけど。 そこまでしなくても、encoding の有無で判別できるような気がするんですが、 わたしの理解が間違っているのかなぁ。 -- NARUSE, Yui