]> granicus.if.org Git - python/commitdiff
Issue #22156: Fix some "comparison between signed and unsigned integers"
authorVictor Stinner <victor.stinner@gmail.com>
Fri, 15 Aug 2014 23:03:39 +0000 (01:03 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 15 Aug 2014 23:03:39 +0000 (01:03 +0200)
compiler warnings in the Modules/ subdirectory.

13 files changed:
Modules/_bz2module.c
Modules/_csv.c
Modules/_ctypes/callproc.c
Modules/_elementtree.c
Modules/_io/bytesio.c
Modules/_io/textio.c
Modules/_sre.c
Modules/_struct.c
Modules/_testcapimodule.c
Modules/_tkinter.c
Modules/_tracemalloc.c
Modules/arraymodule.c
Modules/posixmodule.c

index e652f4dfcd81edc1972314bf36a817d88d1d199f..4f2afda0976bfbe47d35ea3e0ac7ebdaeefdda1b 100644 (file)
@@ -188,7 +188,7 @@ compress(BZ2Compressor *c, char *data, size_t len, int action)
         if (action == BZ_FINISH && bzerror == BZ_STREAM_END)
             break;
     }
-    if (data_size != PyBytes_GET_SIZE(result))
+    if (data_size != (size_t)PyBytes_GET_SIZE(result))
         if (_PyBytes_Resize(&result, data_size) < 0)
             goto error;
     return result;
@@ -457,7 +457,7 @@ decompress(BZ2Decompressor *d, char *data, size_t len)
             d->bzs.avail_out = (unsigned int)Py_MIN(buffer_left, UINT_MAX);
         }
     }
-    if (data_size != PyBytes_GET_SIZE(result))
+    if (data_size != (size_t)PyBytes_GET_SIZE(result))
         if (_PyBytes_Resize(&result, data_size) < 0)
             goto error;
     return result;
index 6eaaea2bca73e86a1e5a4eb151b3ac1122efb8da..ade35e5bf71d58901475ebe3d00981826b9223a0 100644 (file)
@@ -290,7 +290,7 @@ dialect_check_quoting(int quoting)
     StyleDesc *qs;
 
     for (qs = quote_styles; qs->name; qs++) {
-        if (qs->style == quoting)
+        if ((int)qs->style == quoting)
             return 0;
     }
     PyErr_Format(PyExc_TypeError, "bad \"quoting\" value");
index 74119a3b4d08144e3a1104731f2e8473ce1ef6e9..d365e381a2eca591c718c09b808e1c32095abe23 100644 (file)
@@ -1606,7 +1606,7 @@ resize(PyObject *self, PyObject *args)
                      "Memory cannot be resized because this object doesn't own it");
         return NULL;
     }
-    if (size <= sizeof(obj->b_value)) {
+    if ((size_t)size <= sizeof(obj->b_value)) {
         /* internal default buffer is large enough */
         obj->b_size = size;
         goto done;
index b3b69767086c2797cda702c7bec9688860c445be..9b3e9ed313b24c00eee18e26fc207528f85e7adb 100644 (file)
@@ -3741,7 +3741,7 @@ PyInit__elementtree(void)
     if (expat_capi) {
         /* check that it's usable */
         if (strcmp(expat_capi->magic, PyExpat_CAPI_MAGIC) != 0 ||
-            expat_capi->size < sizeof(struct PyExpat_CAPI) ||
+            (size_t)expat_capi->size < sizeof(struct PyExpat_CAPI) ||
             expat_capi->MAJOR_VERSION != XML_MAJOR_VERSION ||
             expat_capi->MINOR_VERSION != XML_MINOR_VERSION ||
             expat_capi->MICRO_VERSION != XML_MICRO_VERSION) {
index d07da084213797141c2cb85d751973be378c03b4..56ad788d3f11f43d252db8b353e8feea5adbf535 100644 (file)
@@ -53,10 +53,12 @@ unshare(bytesio *self, size_t preferred_size, int truncate)
         Py_ssize_t copy_size;
         char *new_buf;
 
-        if((! truncate) && preferred_size < self->string_size) {
+        if((! truncate) && preferred_size < (size_t)self->string_size) {
             preferred_size = self->string_size;
         }
 
+        /* PyMem_Malloc() returns NULL if preferred_size is bigger
+           than PY_SSIZE_T_MAX */
         new_buf = (char *)PyMem_Malloc(preferred_size);
         if (new_buf == NULL) {
             PyErr_NoMemory();
@@ -64,7 +66,7 @@ unshare(bytesio *self, size_t preferred_size, int truncate)
         }
 
         copy_size = self->string_size;
-        if (copy_size > preferred_size) {
+        if ((size_t)copy_size > preferred_size) {
             copy_size = preferred_size;
         }
 
index aed5b2d60685490eadc2e27d6435b54548b077c2..b4c3c406d38a97cb1ddc121850fea79de6b2d7df 100644 (file)
@@ -1730,7 +1730,7 @@ _PyIO_find_line_ending(
     else {
         /* Non-universal mode. */
         Py_ssize_t readnl_len = PyUnicode_GET_LENGTH(readnl);
-        char *nl = PyUnicode_DATA(readnl);
+        Py_UCS1 *nl = PyUnicode_1BYTE_DATA(readnl);
         /* Assume that readnl is an ASCII character. */
         assert(PyUnicode_KIND(readnl) == PyUnicode_1BYTE_KIND);
         if (readnl_len == 1) {
index 300d883cf6155667d8c13826282825469da487ae..13479ba5d7f92e77499b6ac1e223a9046e3a9e28 100644 (file)
@@ -1236,7 +1236,7 @@ pattern_repr(PatternObject *obj)
     };
     PyObject *result = NULL;
     PyObject *flag_items;
-    int i;
+    size_t i;
     int flags = obj->flags;
 
     /* Omit re.UNICODE for valid string patterns. */
index 4941fc8c8272f9a59d960f669448ccb98bce8063..06f0d3a77e2786df4ccc74d0d9e391a58f006567 100644 (file)
@@ -1263,7 +1263,8 @@ prepare_s(PyStructObject *self)
     const char *s;
     const char *fmt;
     char c;
-    Py_ssize_t size, len, ncodes, num, itemsize;
+    Py_ssize_t size, len, num, itemsize;
+    size_t ncodes;
 
     fmt = PyBytes_AS_STRING(self->s_format);
 
@@ -1319,7 +1320,7 @@ prepare_s(PyStructObject *self)
     }
 
     /* check for overflow */
-    if ((ncodes + 1) > (PY_SSIZE_T_MAX / sizeof(formatcode))) {
+    if ((ncodes + 1) > ((size_t)PY_SSIZE_T_MAX / sizeof(formatcode))) {
         PyErr_NoMemory();
         return -1;
     }
index 9f20abb20865a8c09a94677fc96ce84d7dc550ae..643cbde317b072e07d6b173fd7b7039de6db0659 100644 (file)
@@ -1719,7 +1719,7 @@ test_long_numbits(PyObject *self)
              {-0xffffL, 16, -1},
              {0xfffffffL, 28, 1},
              {-0xfffffffL, 28, -1}};
-    int i;
+    size_t i;
 
     for (i = 0; i < Py_ARRAY_LENGTH(testcases); ++i) {
         size_t nbits;
index b5f23bc9d168da84c90f53666673b9e93c72d42d..07175944ec052c1d14d1c83872a0c27fc0ee9c31 100644 (file)
@@ -1414,7 +1414,7 @@ varname_converter(PyObject *in, void *_out)
             return 0;
         }
         s = PyBytes_AsString(in);
-        if (strlen(s) != PyBytes_Size(in)) {
+        if (strlen(s) != (size_t)PyBytes_Size(in)) {
             PyErr_SetString(PyExc_ValueError, "null byte in bytes object");
             return 0;
         }
@@ -1431,7 +1431,7 @@ varname_converter(PyObject *in, void *_out)
             PyErr_SetString(PyExc_OverflowError, "string is too long");
             return 0;
         }
-        if (strlen(s) != size) {
+        if (strlen(s) != (size_t)size) {
             PyErr_SetString(PyExc_ValueError, "null character in string");
             return 0;
         }
index 257ae1b57a2c7df01dd4b2857e7ebf37908433d2..e0024e924cc3c65062ac1397fd68791e1539458b 100644 (file)
@@ -79,7 +79,7 @@ typedef struct {
         (sizeof(traceback_t) + sizeof(frame_t) * (NFRAME - 1))
 
 #define MAX_NFRAME \
-        ((INT_MAX - sizeof(traceback_t)) / sizeof(frame_t) + 1)
+        (((size_t)INT_MAX - sizeof(traceback_t)) / sizeof(frame_t) + 1)
 
 static PyObject *unknown_filename = NULL;
 static traceback_t tracemalloc_empty_traceback;
@@ -874,7 +874,7 @@ tracemalloc_start(int max_nframe)
         return 0;
     }
 
-    assert(1 <= max_nframe && max_nframe <= MAX_NFRAME);
+    assert(1 <= max_nframe && (size_t)max_nframe <= MAX_NFRAME);
     tracemalloc_config.max_nframe = max_nframe;
 
     /* allocate a buffer to store a new traceback */
@@ -1226,7 +1226,7 @@ py_tracemalloc_start(PyObject *self, PyObject *args)
     if (!PyArg_ParseTuple(args, "|n:start", &nframe))
         return NULL;
 
-    if (nframe < 1 || nframe > MAX_NFRAME) {
+    if (nframe < 1 || (size_t)nframe > MAX_NFRAME) {
         PyErr_Format(PyExc_ValueError,
                      "the number of frames must be in range [1; %i]",
                      (int)MAX_NFRAME);
@@ -1388,7 +1388,7 @@ parse_sys_xoptions(PyObject *value)
     if (nframe == -1 && PyErr_Occurred())
         return -1;
 
-    if (nframe < 1 || nframe > MAX_NFRAME)
+    if (nframe < 1 || (size_t)nframe > MAX_NFRAME)
         return -1;
 
     return Py_SAFE_DOWNCAST(nframe, long, int);
@@ -1412,7 +1412,7 @@ _PyTraceMalloc_Init(void)
         value = strtol(p, &endptr, 10);
         if (*endptr != '\0'
             || value < 1
-            || value > MAX_NFRAME
+            || (size_t)value > MAX_NFRAME
             || errno == ERANGE)
         {
             Py_FatalError("PYTHONTRACEMALLOC: invalid number of frames");
index 4a1c158514de5c900655d31becee6ef8c3bd28d5..d0c94f7b23f4976559204cd41241f501be78d525 100644 (file)
@@ -2000,7 +2000,7 @@ array_reconstructor(PyObject *self, PyObject *args)
          */
         for (descr = descriptors; descr->typecode != '\0'; descr++) {
             if (descr->is_integer_type &&
-                descr->itemsize == mf_descr.size &&
+                (size_t)descr->itemsize == mf_descr.size &&
                 descr->is_signed == mf_descr.is_signed)
                 typecode = descr->typecode;
         }
index 533d7b4bb4c7176909fe93ae49879a02b0d1e11f..af5c2a691fd5bb83ecacdc960bb3713d7b1638cd 100644 (file)
@@ -902,7 +902,7 @@ path_converter(PyObject *o, void *p) {
 #endif
 
     narrow = PyBytes_AS_STRING(bytes);
-    if (length != strlen(narrow)) {
+    if ((size_t)length != strlen(narrow)) {
         FORMAT_EXCEPTION(PyExc_ValueError, "embedded NUL character in %s");
         Py_DECREF(bytes);
         return 0;