summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2005-12-21 21:20:23 +0000
committerNicholas Clark <nick@ccl4.org>2005-12-21 21:20:23 +0000
commitef58ba18ed70b0d30770bdab409e1997885d9590 (patch)
treea192e76c4a771e62131a5700928f7c04c97169e9 /sv.c
parentf730a42d0edd6097a2336d4fa688925f1f317778 (diff)
downloadperl-ef58ba18ed70b0d30770bdab409e1997885d9590.tar.gz
For consistency sv_2cv should not leave the stash pointer uninitialised
for some cases. Although it seems that only pp_sort pays any attention to it, of all the code on CPAN. p4raw-id: //depot/perl@26438
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index a6f0866207..38dfb6ff7b 100644
--- a/sv.c
+++ b/sv.c
@@ -6734,7 +6734,7 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref)
CV *cv = Nullcv;
if (!sv)
- return *gvp = Nullgv, Nullcv;
+ return *st = NULL, *gvp = Nullgv, Nullcv;
switch (SvTYPE(sv)) {
case SVt_PVCV:
*st = CvSTASH(sv);
@@ -6742,6 +6742,7 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref)
return (CV*)sv;
case SVt_PVHV:
case SVt_PVAV:
+ *st = NULL;
*gvp = Nullgv;
return Nullcv;
case SVt_PVGV:
@@ -6773,8 +6774,10 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref)
else
gv = gv_fetchsv(sv, lref, SVt_PVCV);
*gvp = gv;
- if (!gv)
+ if (!gv) {
+ *st = NULL;
return Nullcv;
+ }
*st = GvESTASH(gv);
fix_gv:
if (lref && !GvCVu(gv)) {