diff options
author | Nicholas Clark <nick@ccl4.org> | 2005-12-21 21:20:23 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2005-12-21 21:20:23 +0000 |
commit | ef58ba18ed70b0d30770bdab409e1997885d9590 (patch) | |
tree | a192e76c4a771e62131a5700928f7c04c97169e9 /sv.c | |
parent | f730a42d0edd6097a2336d4fa688925f1f317778 (diff) | |
download | perl-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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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)) { |