diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2010-02-14 12:53:32 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2010-02-14 12:53:32 (GMT) |
commit | 66f575b359f8a29963483d60776bafcb9a2dfd7f (patch) | |
tree | f6070f3d4b572bdf67d5b2fb62d1b3eb1ed3bf47 /Objects | |
parent | 4e5112867ce69d29f36f7c441bf63f99b9835b0d (diff) | |
download | cpython-66f575b359f8a29963483d60776bafcb9a2dfd7f.zip cpython-66f575b359f8a29963483d60776bafcb9a2dfd7f.tar.gz cpython-66f575b359f8a29963483d60776bafcb9a2dfd7f.tar.bz2 |
Merged revisions 78183-78184 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78183 | mark.dickinson | 2010-02-14 12:16:43 +0000 (Sun, 14 Feb 2010) | 1 line
Silence some 'comparison between signed and unsigned' compiler warnings.
........
r78184 | mark.dickinson | 2010-02-14 12:31:26 +0000 (Sun, 14 Feb 2010) | 1 line
Silence more compiler warnings; fix an instance of potential undefined behaviour from signed overflow.
........
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/bytearrayobject.c | 9 | ||||
-rw-r--r-- | Objects/listobject.c | 15 |
2 files changed, 13 insertions, 11 deletions
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index 42f1ed6..8f833d8 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -656,7 +656,7 @@ bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *valu i < slicelen; cur += step, i++) { Py_ssize_t lim = step - 1; - if (cur + step >= PyByteArray_GET_SIZE(self)) + if (cur + step >= (size_t)PyByteArray_GET_SIZE(self)) lim = PyByteArray_GET_SIZE(self) - cur - 1; memmove(self->ob_bytes + cur - i, @@ -664,7 +664,7 @@ bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *valu } /* Move the tail of the bytes, in one chunk */ cur = start + slicelen*step; - if (cur < PyByteArray_GET_SIZE(self)) { + if (cur < (size_t)PyByteArray_GET_SIZE(self)) { memmove(self->ob_bytes + cur - slicelen, self->ob_bytes + cur, PyByteArray_GET_SIZE(self) - cur); @@ -844,13 +844,14 @@ bytearray_repr(PyByteArrayObject *self) const char *quote_postfix = ")"; Py_ssize_t length = Py_SIZE(self); /* 14 == strlen(quote_prefix) + 2 + strlen(quote_postfix) */ - size_t newsize = 14 + 4 * length; + size_t newsize; PyObject *v; - if (newsize > PY_SSIZE_T_MAX || newsize / 4 - 3 != length) { + if (length > (PY_SSIZE_T_MAX - 14) / 4) { PyErr_SetString(PyExc_OverflowError, "bytearray object is too large to make repr"); return NULL; } + newsize = 14 + 4 * length; v = PyUnicode_FromUnicode(NULL, newsize); if (v == NULL) { return NULL; diff --git a/Objects/listobject.c b/Objects/listobject.c index a97d475..88e2291 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -126,11 +126,11 @@ PyList_New(Py_ssize_t size) PyErr_BadInternalCall(); return NULL; } - nbytes = size * sizeof(PyObject *); /* Check for overflow without an actual overflow, * which can cause compiler to optimise out */ - if (size > PY_SIZE_MAX / sizeof(PyObject *)) + if ((size_t)size > PY_SIZE_MAX / sizeof(PyObject *)) return PyErr_NoMemory(); + nbytes = size * sizeof(PyObject *); if (numfree) { numfree--; op = free_list[numfree]; @@ -1343,7 +1343,7 @@ merge_getmem(MergeState *ms, Py_ssize_t need) * we don't care what's in the block. */ merge_freemem(ms); - if (need > PY_SSIZE_T_MAX / sizeof(PyObject*)) { + if ((size_t)need > PY_SSIZE_T_MAX / sizeof(PyObject*)) { PyErr_NoMemory(); return -1; } @@ -2456,7 +2456,8 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) step = -step; } - assert(slicelength <= PY_SIZE_MAX / sizeof(PyObject*)); + assert((size_t)slicelength <= + PY_SIZE_MAX / sizeof(PyObject*)); garbage = (PyObject**) PyMem_MALLOC(slicelength*sizeof(PyObject*)); @@ -2472,13 +2473,13 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) and then tail end of the list that was not covered by the slice */ for (cur = start, i = 0; - cur < stop; + cur < (size_t)stop; cur += step, i++) { Py_ssize_t lim = step - 1; garbage[i] = PyList_GET_ITEM(self, cur); - if (cur + step >= Py_SIZE(self)) { + if (cur + step >= (size_t)Py_SIZE(self)) { lim = Py_SIZE(self) - cur - 1; } @@ -2487,7 +2488,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) lim * sizeof(PyObject *)); } cur = start + slicelength*step; - if (cur < Py_SIZE(self)) { + if (cur < (size_t)Py_SIZE(self)) { memmove(self->ob_item + cur - slicelength, self->ob_item + cur, (Py_SIZE(self) - cur) * |