summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-13 09:02:46 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-13 09:02:46 -0600
commitce38493ccaffb0867e6d891b041a03de0feb97a7 (patch)
tree847a609e72612403d37c2d72df7958f73117bed8
parentebcc8ba8734ef1bb70c0df6fabfa7c41d1309e73 (diff)
downloadpackage-stash-xs-ce38493ccaffb0867e6d891b041a03de0feb97a7.tar.gz
package-stash-xs-ce38493ccaffb0867e6d891b041a03de0feb97a7.zip
actually fix the memory leak in new()
-rw-r--r--Stash.xs6
1 files changed, 3 insertions, 3 deletions
diff --git a/Stash.xs b/Stash.xs
index b2a744b..ac83c6d 100644
--- a/Stash.xs
+++ b/Stash.xs
@@ -274,11 +274,11 @@ new(class, package_name)
if (!SvPOK(package_name))
croak("The constructor argument must be the name of a package");
- instance = newHV();
+ instance = (HV*)sv_2mortal((SV*)newHV());
- hv_store(instance, "name", 4, package_name, 0);
+ hv_store(instance, "name", 4, SvREFCNT_inc(package_name), 0);
namespace = gv_stashpv(SvPV_nolen(package_name), GV_ADD);
- hv_store(instance, "namespace", 9, newRV_noinc((SV*)namespace), 0);
+ hv_store(instance, "namespace", 9, newRV_inc((SV*)namespace), 0);
RETVAL = sv_bless(newRV_inc((SV*)instance), gv_stashpv(class, 0));
OUTPUT: