From: Marcus Holland-Moritz Date: Mon, 25 Aug 2003 22:02:17 +0000 (+0200) Subject: more valgrinding: select problem? X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ad517f75025ba4de08890f9694f2e535efc32ab4;p=p5sagit%2Fp5-mst-13.2.git more valgrinding: select problem? From: "Marcus Holland-Moritz" 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 --- diff --git a/pp_sys.c b/pp_sys.c index cafcbe8..e7a914b 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -1024,15 +1024,19 @@ PP(pp_sselect) 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))); -# else - growsize = sizeof(fd_set); # endif sv = SP[4];