This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
dispatch signals when leaving an eval
[perl5.git] / t / op / sigdispatch.t
index 522e3b6..29fc062 100644 (file)
@@ -9,9 +9,9 @@ BEGIN {
 use strict;
 use Config;
 
 use strict;
 use Config;
 
-plan tests => 15;
+plan tests => 17;
 
 
-watchdog(10);
+watchdog(15);
 
 $SIG{ALRM} = sub {
     die "Alarm!\n";
 
 $SIG{ALRM} = sub {
     die "Alarm!\n";
@@ -92,3 +92,25 @@ TODO:
     } for 1..2;
     is $gotit, 0, 'Received both signals';
 }
     } for 1..2;
     is $gotit, 0, 'Received both signals';
 }
+
+{
+    # RT #88774
+    # make sure the signal handler's called in an eval block *before*
+    # the eval is popped
+
+    $SIG{'ALRM'} = sub { die "HANDLER CALLED\n" };
+
+    eval {
+       alarm(2);
+       select(undef,undef,undef,10);
+    };
+    alarm(0);
+    is($@, "HANDLER CALLED\n", 'block eval');
+
+    eval q{
+       alarm(2);
+       select(undef,undef,undef,10);
+    };
+    alarm(0);
+    is($@, "HANDLER CALLED\n", 'string eval');
+}