I'd like to reopen this old bug as I've hit it in my own code... I've no idea how to fix it properly, but at least before that is decided either way, I believe issuing a warning gives some idea that there's undefined behavior: --- pp.c.0 2012-01-06 01:07:34.511988700 +0100 +++ pp.c 2012-01-06 19:04:06.311428300 +0100 @@ -515,9 +515,11 @@ SvTEMP_off(sv); SvREFCNT_inc_void_NN(sv); } - else if (SvPADTMP(sv) && !IS_PADGV(sv)) + else if (SvPADTMP(sv) && !IS_PADGV(sv)) { + Perl_ck_warner(aTHX_ packWARN(WARN_MISC), + "Implicit copy of a read-only scalar due to aliasing"); sv = newSVsv(sv); - else { + } else { SvTEMP_off(sv); SvREFCNT_inc_void_NN(sv); } --- via perlbug: queue: perl5 status: open https://rt.perl.org:443/rt3/Ticket/Display.html?id=21979Thread Previous