« Return to Thread: [ruby-dev:36750] [Bug #650] Marshal.load raises RegexpError

[ruby-dev:36775] Re: [Bug #650] Marshal.load raises RegexpError

by Tanaka Akira-3 :: Rate this Message:

Reply to Author | View in Thread

In article <48F90C3D.80609@...>,
  Urabe Shyouhei <shyouhei@...> writes:

> 気づいたんですけど、それだと
>
> % ruby1.9 -e 'Marshal.dump(/\u0001/, STDOUT)' | \
>   ruby1.8 -e 'Marshal.dump(Marshal.load(STDIN), STDOUT)' | \
>   ruby1.9 -e 'p Marshal.load(STDIN)'
>
> とかがroud-tripしなくなると思う(いまはする)んですけど、平気なんですかね。

syntax と semantics のどちらを保存するかというと、semantics
のほうがいいんじゃないですかね。

今は以下のように、マッチするものが変化するわけで、それが変化
しないようになるほうがまだマシなんじゃないでしょうか。

% ruby-1.8 -e 'print Marshal.dump(/\u0001/)' > z
% ruby-1.8 -e 'r = Marshal.load(STDIN); p ["\x01", "u0001"].map {|s| r =~ s }' < z    
[nil, 0]
% ruby-1.9 -e 'r = Marshal.load(STDIN); p ["\x01", "u0001"].map {|s| r =~ s }' < z
[0, nil]
--
[田中 哲][たなか あきら][Tanaka Akira]

 « Return to Thread: [ruby-dev:36750] [Bug #650] Marshal.load raises RegexpError