<div dir="ltr">Мне кажется, это надо писать автору, нет?)</div><div class="gmail_extra"><br><div class="gmail_quote">2014-11-26 20:01 GMT+03:00 Вадим Власов <span dir="ltr"><<a href="mailto:scripter.vrn@gmail.com" target="_blank">scripter.vrn@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Исследуя новый сериализатор в JSON::XS наткнулся:</div><br clear="all"><div><div><font face="monospace">$ echo 'use strict;</font></div><div><font face="monospace">use warnings;</font></div><div><font face="monospace">use feature "say";</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">use JSON::XS;</font></div><div><font face="monospace">my $j=JSON::XS->new->allow_tags;</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">say "JSON::XS: $JSON::XS::VERSION";</font></div><div><font face="monospace">say "Types::Serialiser: $Types::Serialiser::VERSION";</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">my $t = $j->encode( Foo->new );</font></div><div><font face="monospace">say $t;</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">my @t = $j->encode( Foo->new );</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">package Foo;</font></div><div><font face="monospace">sub new { bless {}, $_[0]; }</font></div><div><font face="monospace">sub FREEZE { ( 123, 456 ); }' | perl</font></div><div><font face="monospace"><b>JSON::XS: 3.01</b></font></div><div><font face="monospace"><b>Types::Serialiser: 1.0</b></font></div><div><font face="monospace"><b>("Foo")[123,456]</b></font></div><div><font face="monospace"><b>panic: attempt to copy freed scalar c37a18 to c37a00 at - line 14.</b></font></div><div><br></div><div><div><font face="monospace">$ perl -MJSON::XS -wE 'say JSON::XS->new->allow_tags->encode( bless {}, Foo ); package Foo; sub FREEZE{ return 123 }'<br></font></div><div><font face="monospace"><b>Use of uninitialized value in say at -e line 1.</b></font></div><div><font face="monospace"><b>("Foo")[123]</b></font></div></div><div><br></div><div><div><div><font face="monospace">$ perl -MJSON::XS -wE 'say scalar( JSON::XS->new->allow_tags->encode( bless {}, Foo )); package Foo; sub FREEZE{ return 123 }'<br></font></div><div><font face="monospace"><b>("Foo")[123]</b></font></div></div></div><div><br></div><div>Проверили на разных машинах и на разных версиях perl-а - одно и то же.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-- <br></div></font></span></div><span class="HOEnZb"><font color="#888888"><div><div dir="ltr"><div>  С уважением,<br></div><div>  Вадим Власов</div><div>  т.: <a href="tel:%2B7%20%28916%29%20424-00-72" value="+79164240072" target="_blank">+7 (916) 424-00-72</a></div></div></div>
</font></span></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>