(perl #133660) add test for goto &sub in overload leaking
authorTony Cook <tony@develop-help.com>
Wed, 6 Feb 2019 04:42:10 +0000 (15:42 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 13 Feb 2019 05:06:09 +0000 (16:06 +1100)
The bug in this case was fixed in db9848c8d.

t/op/svleak.t

index 3283c95..bfa6747 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
 
 use Config;
 
-plan tests => 149;
+plan tests => 150;
 
 # run some code N times. If the number of SVs at the end of loop N is
 # greater than (N-1)*delta at the end of loop 1, we've got a leak
@@ -625,3 +625,23 @@ SKIP: {
     sub Regex_Key_Leak { my ($r)= keys %rh; "foo"=~$r; }
     leak 2, 0, \&Regex_Key_Leak,"RT #132892 - regex patterns should not leak";
 }
+
+{
+    # perl #133660
+    fresh_perl_is(<<'PERL', "ok", {}, "check goto core sub doesn't leak");
+# done this way to avoid overloads for all of svleak.t
+use B;
+BEGIN {
+    *CORE::GLOBAL::open = sub (*;$@) {
+        goto \&CORE::open;
+    };
+}
+
+my $refcount;
+{
+    open(my $fh, '<', 'TEST');
+    my $sv = B::svref_2object($fh);
+    print $sv->REFCNT == 1 ? "ok" : "not ok";
+}
+PERL
+}