fix another edge case
Jesse Luehrs [Tue, 16 Nov 2010 11:16:44 +0000 (05:16 -0600)]
lib/Package/Stash/PP.pm
t/07-edge-cases.t

index 446642b..55dfddd 100644 (file)
@@ -196,13 +196,7 @@ sub get_symbol {
             }
         }
         else {
-            if ($type eq 'CODE') {
-                # this effectively "de-vivifies" the code slot. if we don't do
-                # this, referencing the coderef at the end of this function
-                # will cause perl to auto-vivify a stub coderef in the slot,
-                # which isn't what we want
-                $self->add_symbol($variable);
-            }
+            return undef;
         }
     }
 
index feec31e..cf75847 100755 (executable)
@@ -47,4 +47,9 @@ ok($stash->has_symbol('%added'), '%added');
 my $constant = $stash->get_symbol('&FOO');
 is(ref($constant), 'CODE', "expanded a constant into a coderef");
 
+# ensure get doesn't prevent subsequent vivification (not sure what the deal
+# was here)
+is(ref($stash->get_symbol('$glob')), '', "nothing yet");
+is(ref($stash->get_or_add_symbol('$glob')), 'SCALAR', "got an empty scalar");
+
 done_testing;