summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-08-16 21:59:46 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-08-16 21:59:46 (GMT)
commit4b046c252e637a482e162f7057294c95933614f2 (patch)
treec5cd9cc4e969d21e2e44dd1d12cc04b31a2eb46c /Modules
parentcb19976f1abb27dd9b28db2d8dea8802326c94de (diff)
downloadcpython-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.c26
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);