This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #129106] Check for null PL_curcop in IN_LC()
authorFather Chrysostomos <sprout@cpan.org>
Wed, 7 Sep 2016 05:11:05 +0000 (22:11 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 7 Sep 2016 05:14:59 +0000 (22:14 -0700)
commit6b4217073fa5e351c7c41aa008f521a158e84237
tree3c20b0a7696de02adbf011da857fe3327a5ebd84
parent10068948b21836d5094958b8b2766eb9393c909b
[perl #129106] Check for null PL_curcop in IN_LC()

or, rather, in macros that it calls.

When exiting a string eval, the current cop may be freed, so PL_curcop
gets set to null.  With the -DC option, we may end up printfing NVs
during scope exit, so the locale macros used to make sure that the
locale is sane before converting the numbers to strings need to make
sure not to read PL_curcop->cop_hints when PL_curcop is null.

This used to crash with: ./miniperl -DC -e'eval "l/A"'

I’m not sure how to write a test for this, or even whether it’s worth
writing a test for -D, which often changes behaviour depending on
porters’ whims.
perl.h