This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Strengthen weak refs when sorting in-place
[perl5.git] / t / op / sort.t
index 96fad1c..21a30d7 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     set_up_inc('../lib');
 }
 use warnings;
-plan(tests => 197);
+plan(tests => 198);
 
 # these shouldn't hang
 {
@@ -492,7 +492,18 @@ cmp_ok($x,'eq','123',q(optimized-away comparison block doesn't take any other ar
     @a = sort { $a <=> $b } @a;
     $$r = "z";
     is ("@a", "3 4 5", "RT #128340");
+}
 
+# in-place sorting of weak references
+SKIP: {
+    skip_if_miniperl("no dynamic loading on miniperl, no extension Scalar::Util", 1);
+    require Scalar::Util;
+    my @a = map { \(my $dummy = $_) } qw(c a d b);
+    my $r = $a[1];
+    Scalar::Util::weaken($a[1]);
+    @a = sort { $$a cmp $$b } @a;
+    undef $r;
+    ok defined $a[0] && ${$a[0]} eq 'a', "in-place sort strengthens weak references";
 }
 
 # Test optimisations of reversed sorts. As we now guarantee stability by