This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
more valgrinding: select problem?
authorMarcus Holland-Moritz <mhx-perl@gmx.net>
Mon, 25 Aug 2003 22:02:17 +0000 (00:02 +0200)
committerJarkko Hietaniemi <jhi@iki.fi>
Mon, 25 Aug 2003 19:25:08 +0000 (19:25 +0000)
From: "Marcus Holland-Moritz" <mhx-perl@gmx.net>
Message-ID: <008301c36b43$cfe26f10$0c2f1fac@R2D2>

In glibc, just use the __FD_SETSIZE since that's
the size of the buffer (usually 1024 bits, much
more than the selectminbits of 32).

p4raw-id: //depot/perl@20893

pp_sys.c

index cafcbe8..e7a914b 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1024,15 +1024,19 @@ PP(pp_sselect)
     Zero(&fd_sets[0], 4, char*);
 #endif
 
     Zero(&fd_sets[0], 4, char*);
 #endif
 
-#  if SELECT_MIN_BITS > 1
+#  if SELECT_MIN_BITS == 1
+    growsize = sizeof(fd_set);
+#  else
+#   if defined(__GLIBC__) && defined(__FD_SETSIZE)
+#      undef SELECT_MIN_BITS
+#      define SELECT_MIN_BITS __FD_SETSIZE
+#   endif
     /* If SELECT_MIN_BITS is greater than one we most probably will want
      * to align the sizes with SELECT_MIN_BITS/8 because for example
      * in many little-endian (Intel, Alpha) systems (Linux, OS/2, Digital
      * UNIX, Solaris, NeXT, Darwin) the smallest quantum select() operates
      * on (sets/tests/clears bits) is 32 bits.  */
     growsize = maxlen + (SELECT_MIN_BITS/8 - (maxlen % (SELECT_MIN_BITS/8)));
     /* If SELECT_MIN_BITS is greater than one we most probably will want
      * to align the sizes with SELECT_MIN_BITS/8 because for example
      * in many little-endian (Intel, Alpha) systems (Linux, OS/2, Digital
      * UNIX, Solaris, NeXT, Darwin) the smallest quantum select() operates
      * on (sets/tests/clears bits) is 32 bits.  */
     growsize = maxlen + (SELECT_MIN_BITS/8 - (maxlen % (SELECT_MIN_BITS/8)));
-#  else
-    growsize = sizeof(fd_set);
 #  endif
 
     sv = SP[4];
 #  endif
 
     sv = SP[4];