[Bug #650] Marshal.load raises RegexpError

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev :36865 ] the message: "[ruby-dev:36865] Re: [Bug #650]
Marshal.load raises RegexpError ", on Oct/22 20:31(JST) Urabe S.
writes:

e$BKNIt$G$9!#e(B

e$B$$$d!"$^$:Nc30$,5/$-$k$J$i8=>u$H2?$iJQ$o$j$^$;$s$,$J!#e(B

e$B%Q%i%a!<%?$r;XDj$9$k$J$ie(B,
e$BNc30$NJaB*$r=q$$$F$b$"$^$jJQ$o$i$J$$$H;W$$$^e(B
e$B$9e(B.

e$B<:GT$7$?$d$D$O$H$b$+$/$H$7$F!"$=$l0J30$NItJ,%G!<%?$r5_$$$?$$$N$,F05!e(B
e$B$G$9!#e(B

e$B$=$&$9$k$He(B,
1.8e$B$G:n@.$7$?%G!<%?$re(B1.9e$B$G;H$($k$h$&$K%3%s%P!<%H$7$?$$$C$Fe(B
e$BMQES$@$H9M$($F$h$$$G$7$g$&$+e(B?

e$BJ8;zNs$H0c$C$Fe(B, e$BAj<j$O%%V%8%’%/%H$J$N$Ge(B,
e$B:F@8$r<:GT$7$?%
%V%8%’%/%H$be(B
e$B$=$l$J$j$N$b$N$K:FJQ49$9$kI,MW$,$"$k$H;W$$$^$9e(B.

e$B$^$?e(B, e$BNc$($Pe(B,
PStoree$B$KF~$C$F$$$k%*%V%8%’%/%H72$rJQ49$9$k$3$H$r9M$($k$He(B,
e$B$[$H$s$I$N$b$N$O@5>o$K:F@8$G$-$k$3$H$,B?$$$H;W$$$^$9$N$Ge(B,
e$BJQ49$K<:GT$7e(B
e$B$?$b$N$@$1$,Nc30$K$J$C$F$b$i$C$?J}$,%3%s%P!<%H$b$7$d$9$$$G$9e(B.

e$B$"$He(B, e$B5$$K$J$C$F$$$k$N$,e(B,

[1, 2, 3, <e$B:F@8ITG=%*%V%8%’%/%He(B>]

e$B$,e(B dump e$B$5$l$F$$$?$H$7$Fe(B, e$B$3$l$re(Bloade$B$9$k$He(B
e$B2?$,5"$C$F$/$k$N$G$7$g$&e(B?
e$B;d$Oe(B, e$B$^$:Nc30$rH/@8$5$;$Fe(B,

[1, 2, 4, markere$B%*%V%8%’%/%He(B]

e$B$K$J$k$N$+$Je(B? e$B$H9M$($F$$$^$7$?e(B. e$BNc30$rJaB*$7$F$+$ie(B,
e$B%*%V%8%’%/%HFb$r%9e(B
e$B%-%c%s$7$F$$$/%$%a!<%8$G$9e(B.
e$BKNIt$5$s$N0F$O$I$N$h$&$KJV$C$F$/$k$N$G$7$ge(B
e$B$&e(B?

e$B$?$@e(B, e$B%9%-%c%s$9$k$H$$$C$F$be(B,
e$BG$0U$N%*%V%8%’%/%H$N%D%j!<$N%9%-%c%s$r0le(B
e$BHL$N%f!<%6$K$d$C$F$b$i$&$N$OFq$7$$5$$,$7$F$-$^$7$?e(B. e$B$Ge(B,
e$B$3$s$J$N$O$$$+e(B
e$B$,$G$7$g$&e(B?

obj = Marshal.load(src, invalid: proc{|invalid_info| …})

e$B:F@8ITG=%*%V%8%’%/%H$KEv$?$C$?$ie(B,
e$B;XDj$7$?e(Bproce$B$r8F$S=P$7e(B, e$B$=$l$J$j$N%e(B
e$B%V%8%’%/%H$rJV$7$F$b$i$C$Fe(B,
e$B$=$l$re(Bloade$B$NJV$jCM$K%"%5%$%s$9$k$H$$$&$b$Ne(B
e$B$G$9e(B. e$B$3$l$@$C$?$ie(B,
e$BJ#;($J%M%C%H%o!<%/>u$K$J$C$?%
%V%8%’%/%H72$re(Bloade$B$7e(B
e$B$?>l9g$G$be(B, e$B$=$l$J$j$KBP1~$G$-$=$&$G$9e(B.

e$BNc30$N$[$&$,$&$l$7$$6ILL$C$F$"$k$s$G$7$g$&$+$M!#e(B

convertere$BE*$J;H$$J}$r$9$k$N$G$"$l$Pe(B,
e$BNc30$G$"$kI,MW$O$J$$5$$,$7$^$9e(B.

invalid: :replacee$B$O$b$A$m$se(BString#encodee$B$+$i0z$CD%$C$F$-$?%"%$%G%#%"$G$9e(B
e$B$1$I!"e(B

e$B$=$&$@$C$?$s$G$9$+e(B…
bladee$B$GD4$Y$?$s$G$9$1$Ie(B,
e$BC5$7J}$,0-$$$N$+K<AE*$J5DO@$O8+$D$+$j$^$;$se(B
e$B$G$7$?e(B. e$BB>$G5DO@$5$l$?$b$N$G$9e(B?

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$BKNIt$G$9!#e(B

e$B@PDM7=<ye(B e$B$5$s$O=q$-$^$7$?e(B:

e$B$i$;$Fe(B, e$B$G$O$I$3$,$*$+$7$$$N$+$Je(B? e$B$C$FCf?H$rD4$Y$i$l$kJ}$,$h$$$N$G$Oe(B?

e$B$$$d!"$^$:Nc30$,5/$-$k$J$i8=>u$H2?$iJQ$o$j$^$;$s$,$J!#e(B

e$B<:GT$7$?$d$D$O$H$b$+$/$H$7$F!"$=$l0J30$NItJ,%G!<%?$r5_$$$?$$$N$,F05!$G$9!#e(B

e$B$D$^$j$=$N%5%s%W%k%3!<%I$O$A$g$C$H$$$1$F$J$$e(B

e$B$"$He(B, e$B$3$NJ}K!$@$He(B, e$B%*%W%7%g%s$N;XDj$bI,MW$J$$$h$&$J5$$,$7$^$9e(B. e$B>o$K%^!<e(B
e$B%+!<$KCV$-49$($A$c$($PNI$$$N$Ge(B.

e$BNc30$N$[$&$,$&$l$7$$6ILL$C$F$"$k$s$G$7$g$&$+$M!#e(B
invalid:
:replacee$B$O$b$A$m$se(BString#encodee$B$+$i0z$CD%$C$F$-$?%"%$%G%#%"$G$9e(B
e$B$1$I!"e(BString#encodee$B$G$O$J$s$G%G%U%)%k%H$,Nc30$J$s$G$7$g$&$+!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev :36871 ] the message: "[ruby-dev:36871] Re: [Bug #650]
Marshal.load raises RegexpError ", on Oct/23 02:07(JST) Urabe S.
writes:

e$BKNIt$G$9!#e(B

e$B$A$g$H:.Mp$7$F$-$^$7$?!#@PDM$5$s$,$$C$7$c$C$F$$i$l$k!VNc30!W$C$F$N$O$Je(B
e$B$s$J$s$G$7$g$&!#e(B
e$B;d$NCf$G$Oe(BRubye$B$Ne(BException(e$B$D$^$je(Brb_raise()e$B$G%H%j%,$9$k$"$le(B)e$B$N$D$b$j$@$Ce(B
e$B$?$N$G!“Nc30$rH/@8$5$;$?$H$3$m$G=hM}$,CfCG$9$kA0Ds$G$OC$r$7$F$$$?$N$G$9e(B
e$B$,!"!VJQ49$K<:GT$7$?$b$N$@$1$,Nc30$K$J$C$F$b$i$C$?J}$,!W$N$/$@$j$G;X$7$Fe(B
e$B$
$i$l$k!VNc30!W$O!”$I$&$b$=$l$H$O0c$&$h$&$G!#e(B

e$B3N$+$K@bL@ITB-$G$7$?e(B.

e$BNc30%*%V%8%’%/%H$N%"%/%;%5$G<h$j$"$($:$NJQ497k2L$,<h$j=P$;$k%$%a!<%8$Ge(B
e$B$7$?e(B.

e$BF~NO$,e(B:

[1, 2, 3, <e$B:F@8ITG=%*%V%8%’%/%He(B>, 5]

e$B$@$C$?$ie(B, e$BNc30$+$i<h$j=P$;$k$N$Oe(B

[1, 2, 4, <markere$B%*%V%8%’%/%He(B>, 5]

e$B$H$$$&46$8$G$9e(B. e$B$3$3$+$ie(B, markere$B%*%V%8%’%/%H$rC5$7$Fe(B,
e$BE,Ev$K=hM}$9$k%$e(B
e$B%a!<%8$G$7$?e(B.

e$B$?$@e(B, e$B:#$Oe(B, e$BA0%a%$%k$NM}M3$h$je(B, APIe$BE*$K$Oe(B

obj = Marshal.load(src, invalid: proc{|invalid_info| …})

e$B$NJ}$,$U$5$o$7$$$H46$8$F$$$^$9e(B.

e$B$5$i$Ke(B, invalid_info
e$B$OE,Ev$Je(B(e$BE,Ev$J>pJs$r;}$C$?e(B)e$BNc30$,$$$$$s$8$c$J$$e(B
e$B$+$H;W$C$F$$$^$9e(B. e$B$D$^$je(B, invalid:
e$B$,;XDj$5$l$J$+$C$?$H$-H/@8$9$k$b$Ne(B
e$B$HF1$8Nc30$G$9e(B. proce$B$G$Oe(B,
e$B8D!9$N%*%V%8%’%/%H$N:F@8$,<:GT$7$?$H$$$&Nc30e(B
e$B$r0z?t$H$7$F<u$1<h$C$F$=$l$J$j$K=hM}$9$k46$8$G$9e(B.

e$B$3$NLdBj$Oe(B, e$B>>K$5$s$Ne(B[ruby-dev:36784]e$B$K$"$C$?e(B:

Marshale$B%U%!%$%k%U%)!<%^%C%H$K$O!"%a%8%c!<%P!<%8%g%s$H%^%$%J!<e(B
e$B%P!<%8%g%s$N>pJs$,IU2C$5$l$F$*$j!"%^%$%J!<%P!<%8%g%s$N0c$$$Oe(B
e$B!V>e0L8_49@-$,$"$k!W$N$G!V8E$$e(Bmarshal formate$B$N%G!<%?$rFI$b$&e(B
e$B$H$9$k$H!“7Y9p$,=P$k$,=hM}<+BN$O$G$-$k!W!”%a%8%c!<%P!<%8%g%se(B
e$B$N0c$$$O!V8_49@-$O$J$$$N$G8E$$%G!<%?$OFI$a$J$$!W$H$9$k;EAH$_e(B
e$B$,$"$j$^$9!#e(B

e$B$G$N%a%8%c!<%P!<%8%g%s$r1[$($k$?$a$NJ}K!$r9M$($k$3$H$G$"$je(B,
e$B7k9==EMW$Je(B
e$BLdBj$@$H;W$C$F$$$^$9e(B.
e$BKNIt$5$s$b$=$NJU$j$r5$$K$7$F$$$k$N$G$O$H46$8$F$$e(B
e$B$^$9e(B. Rubye$B$b:#$H$J$C$F$Oe(B,
e$B%a%8%c!<%P!<%8%g%s$,JQ$o$C$?$N$G8_49@-$,$J$$e(B
e$B$+$i$"$-$i$a$F$Me(B, e$B$H$O$$$($J$$>uBV$@$H9M$($F$$$^$9e(B.

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$BKNIt$G$9!#e(B

e$B$A$g$H:.Mp$7$F$-$^$7$?!#@PDM$5$s$,$$C$7$c$C$F$$i$l$k!VNc30!W$C$F$N$O$Je(B
e$B$s$J$s$G$7$g$&!#e(B
e$B;d$NCf$G$Oe(BRubye$B$Ne(BException(e$B$D$^$je(Brb_raise()e$B$G%H%j%,$9$k$"$le(B)e$B$N$D$b$j$@$Ce(B
e$B$?$N$G!“Nc30$rH/@8$5$;$?$H$3$m$G=hM}$,CfCG$9$kA0Ds$G$OC$r$7$F$$$?$N$G$9e(B
e$B$,!"!VJQ49$K<:GT$7$?$b$N$@$1$,Nc30$K$J$C$F$b$i$C$?J}$,!W$N$/$@$j$G;X$7$Fe(B
e$B$
$i$l$k!VNc30!W$O!”$I$&$b$=$l$H$O0c$&$h$&$G!#e(B

e$B@PDM7=<ye(B e$B$5$s$O=q$-$^$7$?e(B:

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:36872] Re: [Bug #650] Marshal.load raises
RegexpError”
on Thu, 23 Oct 2008 03:26:00 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|e$BNc30%*%V%8%’%/%H$N%"%/%;%5$G<h$j$"$($:$NJQ497k2L$,<h$j=P$;$k%$%a!<%8$Ge(B
|e$B$7$?e(B.

e$BNc30$O<B9T$rCfCG$7$A$c$&$s$G!"!V$H$j$"$($:$NJQ497k2L!W$G$O$+e(B
e$B$J$j>pJs$,<:$o$l$k$h$&$J5$$,$7$^$9!#e(B

|e$BF~NO$,e(B:
|
| [1, 2, 3, <e$B:F@8ITG=%%V%8%’%/%He(B>, 5]
|
|e$B$@$C$?$ie(B, e$BNc30$+$i<h$j=P$;$k$N$Oe(B
|
| [1, 2, 4, <markere$B%
%V%8%’%/%He(B>, 5]
|
|e$B$H$$$&46$8$G$9e(B. e$B$3$3$+$ie(B, markere$B%*%V%8%’%/%H$rC5$7$Fe(B, e$BE,Ev$K=hM}$9$k%$e(B
|e$B%a!<%8$G$7$?e(B.

e$B$3$NNc$@$H!Ve(B5e$B$N:F@8$KFO$+$J$$!W$C$F46$8$G$7$g$&$+!#e(B
5e$B$rI|85$9$k$?$a$K$ONc30$,H/@8$7$?>pJs$@$1$O$H$C$F$*$$$F$H$je(B
e$B$"$($::G8e$^$GI|85$7$F!"2~$a$FNc30$rH/@8$7D>$9$H$+$$$&$3$H$Ke(B
e$B$J$j$=$&$G$9$,!"J#?t$NNc30$,H/@8$7$?$i$I$&$9$k$+$H$+G:$^$7$$e(B
e$B8B$j$G$9!#e(B

|e$B$?$@e(B, e$B:#$Oe(B, e$BA0%a%$%k$NM}M3$h$je(B, APIe$BE*$K$Oe(B
|
| obj = Marshal.load(src, invalid: proc{|invalid_info| …})
|
|e$B$NJ}$,$U$5$o$7$$$H46$8$F$$$^$9e(B.

e$B$3$A$i$J$ie(Bcallbacke$B$H$7$F8F$P$l$^$9$+$i!“J#?t$NNc30$J$I$NLdBje(B
e$B$O$”$j$^$;$s$M!#e(B

|e$B$5$i$Ke(B, invalid_info e$B$OE,Ev$Je(B(e$BE,Ev$J>pJs$r;}$C$?e(B)e$BNc30$,$$$$$s$8$c$J$$e(B
|e$B$+$H;W$C$F$$$^$9e(B. e$B$D$^$je(B, invalid: e$B$,;XDj$5$l$J$+$C$?$H$-H/@8$9$k$b$Ne(B
|e$B$HF1$8Nc30$G$9e(B. proce$B$G$Oe(B, e$B8D!9$N%*%V%8%’%/%H$N:F@8$,<:GT$7$?$H$$$&Nc30e(B
|e$B$r0z?t$H$7$F<u$1<h$C$F$=$l$J$j$K=hM}$9$k46$8$G$9e(B.

e$BNc30$,NI$$$+$b$7$l$J$$$3$H$rF,$+$iH]Dj$9$k$o$1$G$O$"$j$^$;$se(B
e$B$,!"$?$H$($Pe(Bmarshal_loade$B%a%=%C%I$+$iH/@8$7$?Nc30$H$+$O;vA0$Ke(B
e$BM=B,:$Fq$G$9$+$i!"E}0lE*$JBP1~$O$J$+$J$+Fq$7$$$+$b$7$l$^$;$s!#e(B

|e$B$3$NLdBj$Oe(B, e$B>>K$5$s$Ne(B[ruby-dev:36784]e$B$K$"$C$?e(B:
|
|> Marshale$B%U%!%$%k%U%)!<%^%C%H$K$O!"%a%8%c!<%P!<%8%g%s$H%^%$%J!<e(B
|> e$B%P!<%8%g%s$N>pJs$,IU2C$5$l$F$*$j!"%^%$%J!<%P!<%8%g%s$N0c$$$Oe(B
|> e$B!V>e0L8_49@-$,$"$k!W$N$G!V8E$$e(Bmarshal formate$B$N%G!<%?$rFI$b$&e(B
|> e$B$H$9$k$H!“7Y9p$,=P$k$,=hM}<+BN$O$G$-$k!W!”%a%8%c!<%P!<%8%g%se(B
|> e$B$N0c$$$O!V8_49@-$O$J$$$N$G8E$$%G!<%?$OFI$a$J$$!W$H$9$k;EAH$_e(B
|> e$B$,$"$j$^$9!#e(B
|
|e$B$G$N%a%8%c!<%P!<%8%g%s$r1[$($k$?$a$NJ}K!$r9M$($k$3$H$G$"$je(B, e$B7k9==EMW$Je(B
|e$BLdBj$@$H;W$C$F$$$^$9e(B. e$BKNIt$5$s$b$=$NJU$j$r5$$K$7$F$$$k$N$G$O$H46$8$F$$e(B
|e$B$^$9e(B. Rubye$B$b:#$H$J$C$F$Oe(B, e$B%a%8%c!<%P!<%8%g%s$,JQ$o$C$?$N$G8_49@-$,$J$$e(B
|e$B$+$i$"$-$i$a$F$Me(B, e$B$H$O$$$($J$$>uBV$@$H9M$($F$$$^$9e(B.

e$B$^$"!"$=$&$J$s$G$9$,!":#$5$i%a%8%c!<%P!<%8%g%s$,JQ$o$k$3$H$Oe(B
e$B$J$$$H;W$$$^$9!#$H$j$"$($:ITB-$O$J$$$H;W$&$7!#e(B

e$B5$$K$J$C$F$$$kE@$Oe(B

  • e$B%f!<%6Dj5A$Ne(B_load,_dump,marshal_dump,marshal_loade$B$,JQ2=e(B
    e$B$7$?$i$I$&$9$k$N$+e(B
  • markere$B$H$J$k%%V%8%’%/%H$O$I$s$J%%V%8%’%/%H$G$I$s$JB0@-e(B
    e$B$r;}$D$N$+e(B
  • callbacke$B$K$9$k$N$+!"e(Bmarkere$B$rKd$a9~$s$@%*%V%8%’%/%H$rJV$9e(B
    e$B$N$+e(B

e$B$J$I$,$"$j$^$9!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$B31$H$$$$$^$9!#e(B

On 2008/10/23, at 3:26, e$B@PDM7=<ye(B wrote:

e$B$G$N%a%8%c!<%P!<%8%g%s$r1[$($k$?$a$NJ}K!$r9M$($k$3$H$G$“e(B
e$B$je(B, e$B7k9==EMW$Je(B
e$BLdBj$@$H;W$C$F$$$^$9e(B. e$BKNIt$5$s$b$=$NJU$j$r5$$K$7$F$$e(B
e$B$k$N$G$O$H46$8$F$$e(B
e$B$^$9e(B. Rubye$B$b:#$H$J$C$F$Oe(B, e$B%a%8%c!<%P!<%8%g%s$,e(B
e$BJQ$o$C$?$N$G8_49@-$,$J$$e(B
e$B$+$i$”$-$i$a$F$Me(B, e$B$H$O$$$($J$$>uBV$@$H9M$($F$$$^$9e(B.

e$B3F%a%8%c!<%P!<%8%g%s$N%3%s%P!<%?$re(BRubye$B%9%/%j%W%H$Ne(B
e$B%i%$%V%i%j$H$7$FDs6!$7$?$i$I$&$G$7$g$&$+!#e(B

e$BA0$Ke(BRubye$B%9%/%j%W%H$Ge(BMarshale$B%U%)!<%^%C%H$rFI$9~$!“e(B
e$BEDCf$5$s$Ne(BAMarshale$B$r%Q%/$C$F%*%V%8%’%/%H$rI|85$9$ke(B
e$BN}=,$r$7$?$3$H$,$”$j$^$9$,!"$?$V$s<B8=2DG=$J5$$,$7$^$9!#e(B

Marshal.loade$B$,8E$$%G!<%?$rFI$b$&$H$7$?$H$-$K$"$2$kNc30$K!"e(B
e$B%a%8%c!<%P!<%8%g%s$N>pJs$J$I$r$D$1$F$/$l$k$H>/$73Z$K$J$k$N$+$7$i!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev :36882 ] the message: "[ruby-dev:36882] Re: [Bug #650]
Marshal.load raises RegexpError ", on Oct/23 17:39(JST) Yukihiro
Matsumoto writes:

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

e$BNc30$O<B9T$rCfCG$7$A$c$&$s$G!"!V$H$j$"$($:$NJQ497k2L!W$G$O$+e(B
e$B$J$j>pJs$,<:$o$l$k$h$&$J5$$,$7$^$9!#e(B

e$B$(!<e(B.

| [1, 2, 3, <e$B:F@8ITG=%%V%8%’%/%He(B>, 5]
| [1, 2, 4, <markere$B%
%V%8%’%/%He(B>, 5]

e$B$3$NNc$@$H!Ve(B5e$B$N:F@8$KFO$+$J$$!W$C$F46$8$G$7$g$&$+!#e(B
5e$B$rI|85$9$k$?$a$K$ONc30$,H/@8$7$?>pJs$@$1$O$H$C$F$*$$$F$H$je(B
e$B$"$($::G8e$^$GI|85$7$F!"2~$a$FNc30$rH/@8$7D>$9$H$+$$$&$3$H$Ke(B
e$B$J$j$=$&$G$9$,!"J#?t$NNc30$,H/@8$7$?$i$I$&$9$k$+$H$+G:$^$7$$e(B
e$B8B$j$G$9!#e(B

e$B8e<T$N%$%a!<%8$G$7$?e(B. e$B3N$KJ#?t$NNc30$NLdBj$O$"$j$^$9$Me(B.
e$B$K>pJse(B
e$B$rKd$a9~$a$P$I$&$K$+$J$k$H$O;W$$$^$9$,e(B.
e$B$H$O$$$(e(B, e$B$3$A$i$N0F$O$b$&NI$$$G$9e(B.

| obj = Marshal.load(src, invalid: proc{|invalid_info| …})

e$B$3$A$i$J$ie(Bcallbacke$B$H$7$F8F$P$l$^$9$+$i!“J#?t$NNc30$J$I$NLdBje(B
e$B$O$”$j$^$;$s$M!#e(B

e$B$=$&$G$b$J$/$Fe(B,
1e$B%*%V%8%’%/%H$Ge(B2e$B<oN`$NNc30$O$J$/$O$J$$$s$G$9$h$Me(B. e$B:#2se(B
e$B$NLdBj$Oe(BRegexpe$B$NLdBj$G$7$?$,e(B, e$B$^$?e(B,
e$BF1$8%/%i%9$GJL$NLdBj$,H/@8$9$k2DG=e(B
e$B@-$,$J$/$b$J$$$G$9e(B.

e$BNc30$,NI$$$+$b$7$l$J$$$3$H$rF,$+$iH]Dj$9$k$o$1$G$O$"$j$^$;$se(B
e$B$,!"$?$H$($Pe(Bmarshal_loade$B%a%=%C%I$+$iH/@8$7$?Nc30$H$+$O;vA0$Ke(B
e$BM=B,:$Fq$G$9$+$i!"E}0lE*$JBP1~$O$J$+$J$+Fq$7$$$+$b$7$l$^$;$s!#e(B

convertere$B$r:n$k$C$FOC$G$"$l$Pe(B,
e$BE}0lE*$JBP1~$G$J$/$F$bNI$$5$$,$7$^$9e(B.
e$B$H$$$&$+e(B,
e$B>-Mh$I$&$$$&Hs8_49$,H/@8$9$k$+$OFI$a$J$$$G$9$+$i$Me(B.

e$B$^$"!"$=$&$J$s$G$9$,!":#$5$i%a%8%c!<%P!<%8%g%s$,JQ$o$k$3$H$Oe(B
e$B$J$$$H;W$$$^$9!#$H$j$"$($:ITB-$O$J$$$H;W$&$7!#e(B

e$BJQ$($?$/$J$$$C$FOC$J$s$G$9$h$Me(B? e$B$G$be(B,
storee$B$7$?$b$N$,e(B(e$B2?$bBP=h$7$J$$$Ge(B)
loade$B=PMh$J$$$C$F$3$H$Oe(B,
e$B;ve%a%8%c!<%P!<%8%g%s$,JQ$o$C$F$$$k$H;W$$$^e(B
e$B$9$,e(B?

  • e$B%f!<%6Dj5A$Ne(B_load,_dump,marshal_dump,marshal_loade$B$,JQ2=e(B
    e$B$7$?$i$I$&$9$k$N$+e(B

e$B$$$m$$$m$JJQ99$,$"$k$H;W$$$^$9$,e(B,
e$B%f!<%6Dj5A$G$b8_49@-$r0];}$7$F9T$&$Ne(B
e$B$,EvA3$G$9$N$Ge(B, e$B8_49@-$r0];}$G$-$J$$>l9g$G$9$h$Me(B.

marshal_load e$B$Ge(B invalide$B$,;XDj$5$l$F$$$k$H$-$Oe(B,
marshal_loade$B$be(Binvalide$B$re(B
e$B;XDj$7$F8F$S=P$7e(B,
e$B%3!<%k%P%C%/$9$k$J$je(Bmakere$B$r@8@.$9$k$J$j$9$l$PNI$$$Ne(B
e$B$G$Oe(B?

  • markere$B$H$J$k%%V%8%’%/%H$O$I$s$J%%V%8%’%/%H$G$I$s$JB0@-e(B
    e$B$r;}$D$N$+e(B

e$B$3$l$,LdBj$G$9$h$M$‘e(B.
e$B:GDc$G$b%@%s%W$7$?%$%a!<%8$OM_$7$$$H;W$$$^$9$,e(B,
e$B$"$H$Oe(B,
e$B?dA*$NJQ49%*%V%8%’%/%H$,$"$l$P$=$&$$$&$N$b$"$k$HNI$$5$$,$7$^$9e(B.

marshal_load(obj)e$B$N>l9g$Oe(B, obje$B$rEO$9$HNI$$$G$9$Me(B.
e$B0lHLE*$K$b$3$&$$$&$Ne(B
e$B$,$"$k$H$$$$$s$G$9$,e(B, e$B$"e(B,
e$BLdBj$,H/@8$7$?$H$-$K9M$($l$PNI$$$N$+$Je(B? e$B:#2se(B
e$B$Oe(BRegexp e$B$J$N$Ge(B, Regexp.new(string, option,
code)e$B$Ne(Bstring, option,
codee$B$rEO$;$P$[$H$s$I:F@8$G$-$^$9e(B.

e$B$"$H$Oe(B,
e$B2?$NHs8_49@-$+$r<1JL$9$ke(BIDe$B$J$jNc30%/%i%9$,M_$7$$$G$9$h$Me(B.

e$B:#2s$NNc$r%3!<%k%P%C%/$NNc$G9M$($k$He(B

proc do |exp|
case exp
when MarshalInvalid_Regex_backslash_u
newstr = exp.string.gsub("\u", “u”)
Regex.new(newstr, exp.option, exp.code)
:

e$B$_$?$$$J$+$s$8$G$7$g$&$+e(B.

  • callbacke$B$K$9$k$N$+!"e(Bmarkere$B$rKd$a9~$s$@%*%V%8%’%/%H$rJV$9e(B
    e$B$N$+e(B

e$B$3$l$Oe(B, e$B8e<T$NJ}$,NI$$$H;W$$$^$9$M$'e(B.
makere$BKd$a9~$_$O$"$H$Ge(B, e$B%9%-%c%se(B
e$B$9$k$N$,$?$$$X$s$=$&$G$9e(B. e$BL58B%k!<%W$7$?$j$Me(B…

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

e$B%A%1%C%He(B #650 e$B$,99?7$5$l$^$7$?!#e(B (by Yuki S.)

Target version 1.9.xe$B$K%;%C%He(B

1.9.1e$B$K$O4V$K9g$o$J$=$&$G$9!#D>@\E*$J2r7h$O$7$^$;$se(B @
Rubye$B3+H/<T2q5De(B

http://redmine.ruby-lang.org/issues/show/650

e$B%A%1%C%He(B #650 e$B$,99?7$5$l$^$7$?!#e(B (by Yui NARUSE)

ruby -v ruby 1.9.2deve$B$K%;%C%He(B

e$B=$@50F$G$9!#%(%s%3!<%G%#%s%0$r8+$F!"e(BUTF-8e$B$G$J$$>l9g$Oe(B1.8e$B$+$i$H$_$J$7$F!"e(Bs/\u/u/ge$B$7$F$$$^$9!#e(B

diff --git a/marshal.c b/marshal.c
index 0c44eba…d572ecd 100644
— a/marshal.c
+++ b/marshal.c
@@ -1393,8 +1393,19 @@ r_object0(struct load_arg *arg, int *ivp, VALUE
extmod)
{
volatile VALUE str = r_bytes(arg);
int options = r_byte(arg);

  •       v = r_entry(rb_reg_new("", 0, options), arg);
    
  •       if (ivp) {
    
  •           r_ivar(v, arg);
    
  •           rb_p(v);
    
  •           *ivp = Qfalse;
    
  •       }
    
  •       rb_enc_copy(str, v);
    
  •       if (rb_enc_get_index(str) != rb_utf8_encindex()) {
    

+#define f_gsub_bang(x,y,z) rb_funcall(x, rb_intern(“gsub!”), 2, y, z)

  •           f_gsub_bang(str, rb_reg_new("\\\\u", 3, 0), 
    

rb_usascii_str_new_cstr(“u”));

  •       }
          v = r_entry(rb_reg_new_str(str, options), arg);
    
  •        v = r_leave(v, arg);
    
  •       v = r_leave(v, arg);
      }
      break;
    

http://redmine.ruby-lang.org/issues/show/650

e$B%A%1%C%He(B #650 e$B$,99?7$5$l$^$7$?!#e(B (by Yui NARUSE)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

Applied in changeset r23999.

http://redmine.ruby-lang.org/issues/show/650