From: Tim Peters <tim.peters@gmail.com>
Date: Thu, 16 Aug 2001 21:59:46 +0000 (+0000)
Subject: Stop adding 3 to FD_SETSIZE -- it makes no sense.  If it turns out it
X-Git-Tag: v2.2a3~484
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4b046c252e637a482e162f7057294c95933614f2;p=python

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.
---

diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index fa34324f46..f02b15a8ae 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);