summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Objects/bytearrayobject.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
index b1f696227f..31b5804871 100644
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -860,7 +860,7 @@ bytes_init(PyByteArrayObject *self, PyObject *args, PyObject *kwds)
/* Run the iterator to exhaustion */
for (;;) {
PyObject *item;
- Py_ssize_t value;
+ int rc, value;
/* Get the next item */
item = iternext(it);
@@ -874,18 +874,11 @@ bytes_init(PyByteArrayObject *self, PyObject *args, PyObject *kwds)
}
/* Interpret it as an int (__index__) */
- value = PyNumber_AsSsize_t(item, PyExc_ValueError);
+ rc = _getbytevalue(item, &value);
Py_DECREF(item);
- if (value == -1 && PyErr_Occurred())
+ if (!rc)
goto error;
- /* Range check */
- if (value < 0 || value >= 256) {
- PyErr_SetString(PyExc_ValueError,
- "bytes must be in range(0, 256)");
- goto error;
- }
-
/* Append the byte */
if (Py_SIZE(self) < self->ob_alloc)
Py_SIZE(self)++;