Closed GoogleCodeExporter closed 9 years ago
SVOP::save for const produces a lexwarn as op->sv->save sometimes. corrupt
symtable?
This may only happen for COP.cop_warnings
SVOP: const B::PV=SCALAR(0x3d61e80) => (SV*)lexwarn0 at blib/lib/B/C.pm line
1564.
SVOP: const B::IV=SCALAR(0x3d62678) => (SV*)lexwarn0 at blib/lib/B/C.pm line
1564.
SVOP: const B::PV=SCALAR(0x3d6e9b0) => (SV*)lexwarn0 at blib/lib/B/C.pm line
1564.
Original comment by reini.urban
on 8 May 2014 at 5:57
Fixed by omitting objsym/savesym symtable caching for lexwarn syms.
It does not pollute lexwarn* with too many new syms, because we already cache
those in lexwarnsym().
Fixed with commit 0ecb1a98ba848445da6dfc83600f0442f8f03271
Author: Reini Urban <rurban@cpanel.net>
Date: Thu May 8 13:17:03 2014 -0500
C: Fix wrong caching of internal LEXWARN symbols #322
fixes t/CORE/op/smartkve.t regression and issue 322.
we cached lexwarn syms twice, and the storage in the global symtable caused
reproducible errors with t/CORE/op/smartkve.t for const->PV and ->IV as
lexwarns, which caused a concat fail on the rhs lexwarn sym. A lexwarn is
no SV, it is just a special cop_warnings buffer.
Original comment by reini.urban
on 8 May 2014 at 6:20
Original issue reported on code.google.com by
reini.urban
on 8 May 2014 at 5:32