sv.c: Make sv_force_normal always croak on ro SVs
authorFather Chrysostomos <sprout@cpan.org>
Sat, 22 Jun 2013 23:14:24 +0000 (16:14 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 23 Jun 2013 06:16:41 +0000 (23:16 -0700)
Commit 8990e30710 (perl 5.0 alpha 6) changed several SvREADONLY checks
to apply only to run time.  This is convenient when it comes to modify-
ing op trees, whose SVs are, for the most part, marked read-only.

But several pieces of code that relied on this were buggy when dealing
with constants created by â€˜use constant’.  To make it harder to add
such bugs, I have changed all code that relies on this exception and
am now removing it.

sv.c

diff --git a/sv.c b/sv.c
index db0fac5..1b8d45b 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -4861,7 +4861,6 @@ Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags)
 
 #ifdef PERL_ANY_COW
     if (SvREADONLY(sv)) {
-       if (IN_PERL_RUNTIME)
            Perl_croak_no_modify();
     }
     else if (SvIsCOW(sv)) {
@@ -4920,7 +4919,6 @@ Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags)
     }
 #else
     if (SvREADONLY(sv)) {
-       if (IN_PERL_RUNTIME)
            Perl_croak_no_modify();
     }
     else