]> granicus.if.org Git - python/commitdiff
Stop adding 3 to FD_SETSIZE -- it makes no sense. If it turns out it
authorTim Peters <tim.peters@gmail.com>
Thu, 16 Aug 2001 21:59:46 +0000 (21:59 +0000)
committerTim Peters <tim.peters@gmail.com>
Thu, 16 Aug 2001 21:59:46 +0000 (21:59 +0000)
actually does <wink>, perhaps an Insure run will catch it.
Also removed senseless Windows comment.

Modules/selectmodule.c

index fa34324f46d22472763fa7fff58d0c408e216319..f02b15a8ae490d95c771eb80fe75c082d14457d8 100644 (file)
@@ -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);