diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-08-16 21:59:46 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-08-16 21:59:46 (GMT) |
commit | 4b046c252e637a482e162f7057294c95933614f2 (patch) | |
tree | c5cd9cc4e969d21e2e44dd1d12cc04b31a2eb46c /Modules | |
parent | cb19976f1abb27dd9b28db2d8dea8802326c94de (diff) | |
download | cpython-4b046c252e637a482e162f7057294c95933614f2.zip cpython-4b046c252e637a482e162f7057294c95933614f2.tar.gz cpython-4b046c252e637a482e162f7057294c95933614f2.tar.bz2 |
Stop adding 3 to FD_SETSIZE -- it makes no sense. If it turns out it
actually does <wink>, perhaps an Insure run will catch it.
Also removed senseless Windows comment.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/selectmodule.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index fa34324..f02b15a 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -71,10 +71,10 @@ typedef struct { } pylist; static void -reap_obj(pylist fd2obj[FD_SETSIZE + 3]) +reap_obj(pylist fd2obj[FD_SETSIZE + 1]) { int i; - for (i = 0; i < FD_SETSIZE + 3 && fd2obj[i].sentinel >= 0; i++) { + for (i = 0; i < FD_SETSIZE + 1 && fd2obj[i].sentinel >= 0; i++) { Py_XDECREF(fd2obj[i].obj); fd2obj[i].obj = NULL; } @@ -86,7 +86,7 @@ reap_obj(pylist fd2obj[FD_SETSIZE + 3]) returns a number >= 0 */ static int -list2set(PyObject *list, fd_set *set, pylist fd2obj[FD_SETSIZE + 3]) +list2set(PyObject *list, fd_set *set, pylist fd2obj[FD_SETSIZE + 1]) { int i; int max = -1; @@ -141,7 +141,7 @@ list2set(PyObject *list, fd_set *set, pylist fd2obj[FD_SETSIZE + 3]) /* returns NULL and sets the Python exception if an error occurred */ static PyObject * -set2list(fd_set *set, pylist fd2obj[FD_SETSIZE + 3]) +set2list(fd_set *set, pylist fd2obj[FD_SETSIZE + 1]) { int i, j, count=0; PyObject *list, *o; @@ -190,21 +190,17 @@ static PyObject * select_select(PyObject *self, PyObject *args) { #ifdef SELECT_USES_HEAP - /* This would be an awful lot of stack space on Windows! */ pylist *rfd2obj, *wfd2obj, *efd2obj; #else /* !SELECT_USES_HEAP */ - /* XXX: Why, oh why does this add 3?! As far as anyone can tell, - * it should only add 1 for the sentinel. - * - * XXX: All this should probably be implemented as follows: + /* XXX: All this should probably be implemented as follows: * - find the highest descriptor we're interested in * - add one * - that's the size * See: Stevens, APitUE, $12.5.1 */ - pylist rfd2obj[FD_SETSIZE + 3]; - pylist wfd2obj[FD_SETSIZE + 3]; - pylist efd2obj[FD_SETSIZE + 3]; + pylist rfd2obj[FD_SETSIZE + 1]; + pylist wfd2obj[FD_SETSIZE + 1]; + pylist efd2obj[FD_SETSIZE + 1]; #endif /* SELECT_USES_HEAP */ PyObject *ifdlist, *ofdlist, *efdlist; PyObject *ret = NULL; @@ -253,9 +249,9 @@ select_select(PyObject *self, PyObject *args) #ifdef SELECT_USES_HEAP /* Allocate memory for the lists */ - rfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 3); - wfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 3); - efd2obj = PyMem_NEW(pylist, FD_SETSIZE + 3); + rfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1); + wfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1); + efd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1); if (rfd2obj == NULL || wfd2obj == NULL || efd2obj == NULL) { if (rfd2obj) PyMem_DEL(rfd2obj); if (wfd2obj) PyMem_DEL(wfd2obj); |