This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: A surprising segfault
[perl5.git] / t / io / print.t
old mode 100644 (file)
new mode 100755 (executable)
index 30294f5..d29036b
@@ -1,10 +1,17 @@
 #!./perl
 
-# $Header: print.t,v 4.0 91/03/20 01:51:08 lwall Locked $
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}
 
-print "1..16\n";
+use strict 'vars';
+eval 'use Errno';
+die $@ if $@ and !$ENV{PERL_CORE_MINITEST};
 
-$foo = 'STDOUT';
+print "1..21\n";
+
+my $foo = 'STDOUT';
 print $foo "ok 1\n";
 
 print "ok 2\n","ok 3\n","ok 4\n";
@@ -16,7 +23,7 @@ print foo "ok 6\n";
 printf "ok %d\n",7;
 printf("ok %d\n",8);
 
-@a = ("ok %d%c",9,ord("\n"));
+my @a = ("ok %d%c",9,ord("\n"));
 printf @a;
 
 $a[1] = 10;
@@ -27,6 +34,34 @@ $\ = "\n";
 
 print "ok","11";
 
-@x = ("ok","12\nok","13\nok");
-@y = ("15\nok","16");
+my @x = ("ok","12\nok","13\nok");
+my @y = ("15\nok","16");
 print @x,"14\nok",@y;
+{
+    local $\ = "ok 17\n# null =>[\000]\nok 18\n";
+    print "";
+}
+
+$\ = '';
+
+if (!exists &Errno::EBADF) {
+    print "ok 19 # skipped: no EBADF\n";
+} else {
+    $! = 0;
+    no warnings 'unopened';
+    print NONEXISTENT "foo";
+    print "not " if ($! != &Errno::EBADF);
+    print "ok 19\n";
+}
+
+{
+    # Change 26009: pp_print didn't extend the stack
+    #               before pushing its return value
+    # to make sure only that these obfuscated sentences will not crash.
+
+    map print(reverse), ('')x68;
+    print "ok 20\n";
+
+    map print(+()), ('')x68;
+    print "ok 21\n";
+}