This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[rt #103222] make Internals::SvREFCNT set/get consistent
[perl5.git] / universal.c
index d623a67..0599e67 100644 (file)
@@ -927,8 +927,8 @@ XS(XS_Internals_SvREFCNT)   /* This is dangerous stuff. */
         XSRETURN_IV(SvREFCNT(sv) - 1); /* Minus the ref created for us. */
     else if (items == 2) {
          /* I hope you really know what you are doing. */
-        SvREFCNT(sv) = SvIV(ST(1));
-        XSRETURN_IV(SvREFCNT(sv));
+        SvREFCNT(sv) = SvIV(ST(1)) + 1; /* we free one ref on exit */
+        XSRETURN_IV(SvREFCNT(sv) - 1);
     }
     XSRETURN_UNDEF; /* Can't happen. */
 }