sv.c:S_curse: remove unnecessary null check
authorFather Chrysostomos <sprout@cpan.org>
Thu, 22 Nov 2012 22:53:47 +0000 (14:53 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 23 Nov 2012 20:26:41 +0000 (12:26 -0800)
If an SV has the OBJECT flag on but no STASH, it will cause crashes
elsewhere.  So there has to be a stash here.  I only put the null
check there in 8c34e50dc because I was copying what StashHANDLER
used to do.  8c34e50dc removed the use of StashHANDLER (which calls
gv_handler, which has a null check), replacing it with a different
caching mechanism inlined into S_curse.

sv.c

diff --git a/sv.c b/sv.c
index 5ecfbeb..9aa2224 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -6332,7 +6332,8 @@ S_curse(pTHX_ SV * const sv, const bool check_refcnt) {
        dSP;
        HV* stash;
        do {
-         if ((stash = SvSTASH(sv)) && HvNAME(stash)) {
+         stash = SvSTASH(sv);
+         if (HvNAME(stash)) {
            CV* destructor = NULL;
            assert(SvTYPE(stash) == SVt_PVHV);
            if (!SvOBJECT(stash)) destructor = (CV *)SvSTASH(stash);