Kaydet (Commit) cc024d18 authored tarafından Victor Stinner's avatar Victor Stinner

Issue #18408: Fix iobase_readline(), handle PyByteArray_Resize() failure

üst af8b7e82
/* /*
An implementation of the I/O abstract base classes hierarchy An implementation of the I/O abstract base classes hierarchy
as defined by PEP 3116 - "New I/O" as defined by PEP 3116 - "New I/O"
Classes defined here: IOBase, RawIOBase. Classes defined here: IOBase, RawIOBase.
Written by Amaury Forgeot d'Arc and Antoine Pitrou Written by Amaury Forgeot d'Arc and Antoine Pitrou
*/ */
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
typedef struct { typedef struct {
PyObject_HEAD PyObject_HEAD
PyObject *dict; PyObject *dict;
PyObject *weakreflist; PyObject *weakreflist;
} iobase; } iobase;
...@@ -530,7 +530,10 @@ iobase_readline(PyObject *self, PyObject *args) ...@@ -530,7 +530,10 @@ iobase_readline(PyObject *self, PyObject *args)
} }
old_size = PyByteArray_GET_SIZE(buffer); old_size = PyByteArray_GET_SIZE(buffer);
PyByteArray_Resize(buffer, old_size + PyBytes_GET_SIZE(b)); if (PyByteArray_Resize(buffer, old_size + PyBytes_GET_SIZE(b)) < 0) {
Py_DECREF(b);
goto fail;
}
memcpy(PyByteArray_AS_STRING(buffer) + old_size, memcpy(PyByteArray_AS_STRING(buffer) + old_size,
PyBytes_AS_STRING(b), PyBytes_GET_SIZE(b)); PyBytes_AS_STRING(b), PyBytes_GET_SIZE(b));
...@@ -835,7 +838,7 @@ rawiobase_readall(PyObject *self, PyObject *args) ...@@ -835,7 +838,7 @@ rawiobase_readall(PyObject *self, PyObject *args)
int r; int r;
PyObject *chunks = PyList_New(0); PyObject *chunks = PyList_New(0);
PyObject *result; PyObject *result;
if (chunks == NULL) if (chunks == NULL)
return NULL; return NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment