From: Graham Knop <haarg@haarg.org>
Date: Thu, 25 Jan 2018 14:07:57 +0000 (+0100)
Subject: use sv_2mortal rather than doing SvREFCNT_dec manually
X-Git-Tag: v0.24~7
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=46141c8ec870ad28e9dbd37d43e042e6f96023a2;p=p5sagit%2FSub-Name.git

use sv_2mortal rather than doing SvREFCNT_dec manually
---

diff --git a/Name.xs b/Name.xs
index 5f7c06e..43bd5bd 100644
--- a/Name.xs
+++ b/Name.xs
@@ -114,7 +114,7 @@ subname(name, sub)
 			STRLEN length = end - nameptr + quotes_seen - (*end == '\'' ? 1 : 0);
 			char* left;
 			int i, j;
-			tmp = newSV(length);
+			tmp = sv_2mortal(newSV(length));
 			left = SvPVX(tmp);
 			for (i = 0, j = 0; j < end - nameptr; ++i, ++j) {
 				if (nameptr[j] == '\'') {
@@ -126,7 +126,6 @@ subname(name, sub)
 				}
 			}
 			stash = gv_stashpvn(left, length, GV_ADD | utf8flag);
-			SvREFCNT_dec(tmp);
 		}
 		else
 			stash = gv_stashpvn(nameptr, end - nameptr, GV_ADD | utf8flag);
@@ -141,22 +140,19 @@ subname(name, sub)
 
 		GV* oldgv = CvGV(cv);
 		HV* oldhv = GvSTASH(oldgv);
-		SV* old_full_name = newSVpvn_flags(HvNAME(oldhv), HvNAMELEN_get(oldhv), HvNAMEUTF8(oldhv) ? SVf_UTF8 : 0);
+		SV* old_full_name = sv_2mortal(newSVpvn_flags(HvNAME(oldhv), HvNAMELEN_get(oldhv), HvNAMEUTF8(oldhv) ? SVf_UTF8 : 0));
 		sv_catpvn(old_full_name, "::", 2);
 		sv_catpvn_flags(old_full_name, GvNAME(oldgv), GvNAMELEN(oldgv), GvNAMEUTF8(oldgv) ? SV_CATUTF8 : SV_CATBYTES);
 
 		old_data = hv_fetch_ent(DBsub, old_full_name, 0, 0);
 
-		SvREFCNT_dec(old_full_name);
-
 		if (old_data && HeVAL(old_data)) {
-			SV* new_full_name = newSVpvn_flags(HvNAME(stash), HvNAMELEN_get(stash), HvNAMEUTF8(stash) ? SVf_UTF8 : 0);
+			SV* new_full_name = sv_2mortal(newSVpvn_flags(HvNAME(stash), HvNAMELEN_get(stash), HvNAMEUTF8(stash) ? SVf_UTF8 : 0));
 			sv_catpvn(new_full_name, "::", 2);
 			sv_catpvn_flags(new_full_name, nameptr, s - nameptr, utf8flag ? SV_CATUTF8 : SV_CATBYTES);
 			SvREFCNT_inc(HeVAL(old_data));
 			if (hv_store_ent(DBsub, new_full_name, HeVAL(old_data), 0) != NULL)
 				SvREFCNT_inc(HeVAL(old_data));
-			SvREFCNT_dec(new_full_name);
 		}
 	}