tests for [perl #36347] Object destruction incomplete
authorFather Chrysostomos <sprout@cpan.org>
Mon, 3 Jan 2011 02:30:17 +0000 (18:30 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 3 Jan 2011 02:33:05 +0000 (18:33 -0800)
t/op/ref.t

index 91ba491..83b5cb8 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
 use strict qw(refs subs);
 use re ();
 
-plan(198);
+plan(200);
 
 # Test glob operations.
 
@@ -376,6 +376,25 @@ curr_test($test + 2);
     print "# good, didn't recurse\n";
 }
 
+# test that DESTROY is called on all objects during global destruction,
+# even those without hard references [perl #36347]
+
+is(
+  runperl(
+   stderr => 1, prog => 'sub DESTROY { print q-aaa- } bless \$a[0]'
+  ),
+ "aaa", 'DESTROY called on array elem'
+);
+is(
+  runperl(
+   stderr => 1,
+   prog => '{ bless \my@x; *a=sub{@x}}sub DESTROY { print q-aaa- }'
+  ),
+ "aaa",
+ 'DESTROY called on closure variable'
+);
+
+
 # test if refgen behaves with autoviv magic
 {
     my @a;