summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-16 05:16:44 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-16 05:16:44 -0600
commit4723417a0e4c38ba9bf00a95d70e6872535c4d4c (patch)
treed478eb20787f8be991c6cfa1b70901cb6ae385c8
parent079d40f534bbc0751bd6e2c621edfd367d3943f8 (diff)
downloadpackage-stash-4723417a0e4c38ba9bf00a95d70e6872535c4d4c.tar.gz
package-stash-4723417a0e4c38ba9bf00a95d70e6872535c4d4c.zip
fix another edge case
-rw-r--r--lib/Package/Stash/PP.pm8
-rwxr-xr-xt/07-edge-cases.t5
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;