summaryrefslogtreecommitdiffstats
path: root/Objects/bytearrayobject.c
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2010-02-14 12:53:32 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2010-02-14 12:53:32 (GMT)
commit66f575b359f8a29963483d60776bafcb9a2dfd7f (patch)
treef6070f3d4b572bdf67d5b2fb62d1b3eb1ed3bf47 /Objects/bytearrayobject.c
parent4e5112867ce69d29f36f7c441bf63f99b9835b0d (diff)
downloadcpython-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/bytearrayobject.c')
-rw-r--r--Objects/bytearrayobject.c9
1 files changed, 5 insertions, 4 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;