]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - Upper.xs
Fix "localize *x, 'y', $cx" to match Perl behaviour
[perl/modules/Scope-Upper.git] / Upper.xs
index 17c4407eca2b39af44177bd1433e86133eee031c..2ebee08b0c1d9b189d3c47ddf26596230ca83dc9 100644 (file)
--- a/Upper.xs
+++ b/Upper.xs
@@ -351,11 +351,9 @@ STATIC void su_localize(pTHX_ void *ud_) {
 
  if (SvTYPE(sv) >= SVt_PVGV) {
   gv = (GV *) sv;
-  if (!val) {               /* local *x; */
+  if (!val || !SvROK(val)) { /* local *x; or local *x = $val; */
    t = SVt_PVGV;
-  } else if (!SvROK(val)) { /* local *x = $val; */
-   goto assign;
-  } else {                  /* local *x = \$val; */
+  } else {                   /* local *x = \$val; */
    t = SvTYPE(SvRV(val));
    deref = 1;
   }
@@ -430,7 +428,6 @@ STATIC void su_localize(pTHX_ void *ud_) {
                                      ud, PL_savestack_ix,
                                          PL_scopestack[PL_scopestack_ix]));
 
-assign:
  if (val)
   SvSetMagicSV((SV *) gv, val);