Make the four-argument form of select() return undef
Rafael Garcia-Suarez [Mon, 11 Apr 2005 09:11:53 +0000 (09:11 +0000)]
instead of -1 on error.

p4raw-id: //depot/perl@24223

pod/perl593delta.pod
pod/perlfunc.pod
pp_sys.c

index dfd80b1..54fbe54 100644 (file)
@@ -10,6 +10,9 @@ L<perl592delta> for the differences between 5.8.0 and 5.9.2.
 
 =head1 Incompatible Changes
 
+The 4-argument form of select() now returns C<undef> on error (instead of
+-1).
+
 =head1 Core Enhancements
 
 =head1 Modules and Pragmata
index 0fceb30..552587a 100644 (file)
@@ -4603,8 +4603,7 @@ Note that whether C<select> gets restarted after signals (say, SIGALRM)
 is implementation-dependent.  See also L<perlport> for notes on the
 portability of C<select>.
 
-On error, C<select> behaves like the select(2) system call : it returns
--1 and sets C<$!>.
+On error, C<select> returns C<undef> and sets C<$!>.
 
 B<WARNING>: One should not attempt to mix buffered I/O (like C<read>
 or <FH>) with C<select>, except as permitted by POSIX, and even
index 4b7944a..16f539b 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1129,7 +1129,10 @@ PP(pp_sselect)
        }
     }
 
-    PUSHi(nfound);
+    if (nfound == -1)
+       PUSHs(&PL_sv_undef);
+    else
+       PUSHi(nfound);
     if (GIMME == G_ARRAY && tbuf) {
        value = (NV)(timebuf.tv_sec) +
                (NV)(timebuf.tv_usec) / 1000000.0;