summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>1998-10-16 18:24:45 +0300
committerGurusamy Sarathy <gsar@cpan.org>1998-10-25 05:16:41 +0000
commitf2da832e840f54013cb015f86420ceda75823b28 (patch)
tree1df08d81f28eee0baa540b00eee1ef6aa0c15b87 /pp_sys.c
parentb43ceaf2b133015285f3b5980eae328febf9da1d (diff)
downloadperl-f2da832e840f54013cb015f86420ceda75823b28.tar.gz
commented version of a patch suggested by Drago Goricanec
Message-ID: <oeeogrc1ype.fsf@alpha.hut.fi> Subject: Re: [PATCH 5.005_52] Linux select fails with more than 32 FDs p4raw-id: //depot/perl@2056
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 4439b1c046..1cd1cdae01 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -868,7 +868,12 @@ PP(pp_sselect)
/* little endians can use vecs directly */
#if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
# if SELECT_MIN_BITS > 1
- growsize = 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) the smallest quantum select() operates on
+ * (sets bit) is 32 bits. */
+ growsize = maxlen + (SELECT_MIN_BITS/8 - (maxlen % (SELECT_MIN_BITS/8)));
# else
growsize = sizeof(fd_set);
# endif