This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #115254] Fix flag check on scope exit
authorFather Chrysostomos <sprout@cpan.org>
Sat, 20 Sep 2014 13:41:29 +0000 (06:41 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 20 Sep 2014 16:25:02 +0000 (09:25 -0700)
commit57c404c9ca0d045fece7cbd7010d0d084cef5821
tree199f036fef41bce517085a382bb6d679047223bc
parentf7634e8653b6354fafc3483263dce775dae43ffd
[perl #115254] Fix flag check on scope exit

$ ./perl -Ilib -e '{ my $x = 3; Internals::SvREADONLY $x, 1; () }'
$ ./perl -Ilib -e '{ my $x = ${qr//}; Internals::SvREADONLY $x, 1; () }'
Modification of a read-only value attempted at -e line 1.

The latter causes $x to be marked FAKE.  At the time this code was
introduced in scope.c, read-only+fake meant cow, so the !fake check
was necessary.  (That said, it has always behaved incorrectly for glob
copies that are also marked fake.)
scope.c
t/lib/universal.t