From 4723417a0e4c38ba9bf00a95d70e6872535c4d4c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 16 Nov 2010 05:16:44 -0600 Subject: fix another edge case --- lib/Package/Stash/PP.pm | 8 +------- t/07-edge-cases.t | 5 +++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/Package/Stash/PP.pm b/lib/Package/Stash/PP.pm index 446642b..55dfddd 100644 --- a/lib/Package/Stash/PP.pm +++ b/lib/Package/Stash/PP.pm @@ -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; } } diff --git a/t/07-edge-cases.t b/t/07-edge-cases.t index feec31e..cf75847 100755 --- a/t/07-edge-cases.t +++ b/t/07-edge-cases.t @@ -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; -- cgit v1.2.3-54-g00ecf