summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/arraymodule.c5
-rw-r--r--Modules/selectmodule.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index d2ae367b18..b5f819e2e3 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -805,6 +805,7 @@ static int
array_do_extend(arrayobject *self, PyObject *bb)
{
Py_ssize_t size;
+ char *old_item;
if (!array_Check(bb))
return array_iter_extend(self, bb);
@@ -820,8 +821,10 @@ array_do_extend(arrayobject *self, PyObject *bb)
return -1;
}
size = Py_SIZE(self) + Py_SIZE(b);
+ old_item = self->ob_item;
PyMem_RESIZE(self->ob_item, char, size*self->ob_descr->itemsize);
if (self->ob_item == NULL) {
+ self->ob_item = old_item;
PyErr_NoMemory();
return -1;
}
@@ -874,7 +877,7 @@ array_inplace_repeat(arrayobject *self, Py_ssize_t n)
if (size > PY_SSIZE_T_MAX / n) {
return PyErr_NoMemory();
}
- PyMem_Resize(items, char, n * size);
+ PyMem_RESIZE(items, char, n * size);
if (items == NULL)
return PyErr_NoMemory();
p = items;
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index daabf03ac2..8e26050b9f 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -346,10 +346,12 @@ update_ufd_array(pollObject *self)
{
Py_ssize_t i, pos;
PyObject *key, *value;
+ struct pollfd *old_ufds = self->ufds;
self->ufd_len = PyDict_Size(self->dict);
- PyMem_Resize(self->ufds, struct pollfd, self->ufd_len);
+ PyMem_RESIZE(self->ufds, struct pollfd, self->ufd_len);
if (self->ufds == NULL) {
+ self->ufds = old_ufds;
PyErr_NoMemory();
return 0;
}