]> granicus.if.org Git - python/commitdiff
bpo-28667: Fix a compile warning on FreeBSD when compare with FD_SETSIZE. (#501)
authorSerhiy Storchaka <storchaka@gmail.com>
Sun, 12 Mar 2017 12:43:12 +0000 (14:43 +0200)
committerGitHub <noreply@github.com>
Sun, 12 Mar 2017 12:43:12 +0000 (14:43 +0200)
FreeBSD is the only platforms with unsigned FD_SETSIZE.

Include/fileobject.h
Modules/selectmodule.c

index 6120e51ed00026f1b8a84cf9ad4dd3d2feed1283..1dde17e1efc411b67301e78efd69ef1b29ba4c70 100644 (file)
@@ -39,7 +39,7 @@ PyAPI_DATA(PyTypeObject) PyStdPrinter_Type;
 
 /* A routine to check if a file descriptor can be select()-ed. */
 #ifdef HAVE_SELECT
- #define _PyIsSelectable_fd(FD) (((FD) >= 0) && ((FD) < FD_SETSIZE))
+ #define _PyIsSelectable_fd(FD) ((unsigned int)(FD) < (unsigned int)FD_SETSIZE)
 #else
  #define _PyIsSelectable_fd(FD) (1)
 #endif /* HAVE_SELECT */
index 8bdf3359d48080f8f30738d3c086fcf239a9500b..6f71d5855685f3fb8120488a9635545275be530d 100644 (file)
@@ -68,8 +68,8 @@ typedef struct {
 static void
 reap_obj(pylist fd2obj[FD_SETSIZE + 1])
 {
-    int i;
-    for (i = 0; i < FD_SETSIZE + 1 && fd2obj[i].sentinel >= 0; i++) {
+    unsigned int i;
+    for (i = 0; i < (unsigned int)FD_SETSIZE + 1 && fd2obj[i].sentinel >= 0; i++) {
         Py_CLEAR(fd2obj[i].obj);
     }
     fd2obj[0].sentinel = -1;
@@ -83,7 +83,7 @@ static int
 seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
 {
     int max = -1;
-    int index = 0;
+    unsigned int index = 0;
     Py_ssize_t i;
     PyObject* fast_seq = NULL;
     PyObject* o = NULL;
@@ -120,7 +120,7 @@ seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
         FD_SET(v, set);
 
         /* add object and its file descriptor to the list */
-        if (index >= FD_SETSIZE) {
+        if (index >= (unsigned int)FD_SETSIZE) {
             PyErr_SetString(PyExc_ValueError,
                           "too many file descriptors in select()");
             goto finally;