summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-11-18 16:38:49 -0800
committerFather Chrysostomos <sprout@cpan.org>2011-11-18 17:46:23 -0800
commit7d8b4ed398c3ccc6e5c4965c08a910c72d547f7f (patch)
treed4d1fe2f07a3f18e777a99726ccec803dcd83eef /util.c
parent107c452c64d52e8f29626debd8bdd4c5bc9a0e47 (diff)
downloadperl-7d8b4ed398c3ccc6e5c4965c08a910c72d547f7f.tar.gz
Fix pp_goto crash with orphaned GV
a7999c089 inadvertently made pp_goto crash if the GV had no stash pointer.
Diffstat (limited to 'util.c')
-rw-r--r--util.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/util.c b/util.c
index aa2ae55709..8b2e5f54c9 100644
--- a/util.c
+++ b/util.c
@@ -6555,7 +6555,10 @@ Perl_get_db_sub(pTHX_ SV **svp, CV *cv)
if (!PERLDB_SUB_NN) {
GV *gv = CvGV(cv);
- if ( svp && ((CvFLAGS(cv) & (CVf_ANON | CVf_CLONED))
+ if (!svp) {
+ gv_efullname3(dbsv, gv, NULL);
+ }
+ else if ( (CvFLAGS(cv) & (CVf_ANON | CVf_CLONED))
|| strEQ(GvNAME(gv), "END")
|| ( /* Could be imported, and old sub redefined. */
(GvCV(gv) != cv || !S_gv_has_usable_name(aTHX_ gv))
@@ -6566,7 +6569,7 @@ Perl_get_db_sub(pTHX_ SV **svp, CV *cv)
&& S_gv_has_usable_name(aTHX_ gv = (GV *)*svp)
)
)
- )) {
+ ) {
/* GV is potentially non-unique, or contain different CV. */
SV * const tmp = newRV(MUTABLE_SV(cv));
sv_setsv(dbsv, tmp);