gh-114569: Use PyMem_* APIs for most non-PyObject uses (#114574)

Fix usage in Modules, Objects, and Parser subdirectories.
This commit is contained in:
Erlend E. Aasland 2024-01-26 11:11:35 +01:00 committed by GitHub
parent d0f7f5c41d
commit dcd28b5c35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 36 additions and 33 deletions

View file

@ -132,7 +132,7 @@ PyByteArray_FromStringAndSize(const char *bytes, Py_ssize_t size)
}
else {
alloc = size + 1;
new->ob_bytes = PyObject_Malloc(alloc);
new->ob_bytes = PyMem_Malloc(alloc);
if (new->ob_bytes == NULL) {
Py_DECREF(new);
return PyErr_NoMemory();
@ -221,17 +221,17 @@ PyByteArray_Resize(PyObject *self, Py_ssize_t requested_size)
}
if (logical_offset > 0) {
sval = PyObject_Malloc(alloc);
sval = PyMem_Malloc(alloc);
if (sval == NULL) {
PyErr_NoMemory();
return -1;
}
memcpy(sval, PyByteArray_AS_STRING(self),
Py_MIN((size_t)requested_size, (size_t)Py_SIZE(self)));
PyObject_Free(obj->ob_bytes);
PyMem_Free(obj->ob_bytes);
}
else {
sval = PyObject_Realloc(obj->ob_bytes, alloc);
sval = PyMem_Realloc(obj->ob_bytes, alloc);
if (sval == NULL) {
PyErr_NoMemory();
return -1;
@ -951,7 +951,7 @@ bytearray_repr(PyByteArrayObject *self)
}
newsize += 6 + length * 4;
buffer = PyObject_Malloc(newsize);
buffer = PyMem_Malloc(newsize);
if (buffer == NULL) {
PyErr_NoMemory();
return NULL;
@ -1008,7 +1008,7 @@ bytearray_repr(PyByteArrayObject *self)
}
v = PyUnicode_FromStringAndSize(buffer, p - buffer);
PyObject_Free(buffer);
PyMem_Free(buffer);
return v;
}
@ -1088,7 +1088,7 @@ bytearray_dealloc(PyByteArrayObject *self)
PyErr_Print();
}
if (self->ob_bytes != 0) {
PyObject_Free(self->ob_bytes);
PyMem_Free(self->ob_bytes);
}
Py_TYPE(self)->tp_free((PyObject *)self);
}

View file

@ -3493,7 +3493,7 @@ type_new_set_doc(PyTypeObject *type)
// Silently truncate the docstring if it contains a null byte
Py_ssize_t size = strlen(doc_str) + 1;
char *tp_doc = (char *)PyObject_Malloc(size);
char *tp_doc = (char *)PyMem_Malloc(size);
if (tp_doc == NULL) {
PyErr_NoMemory();
return -1;
@ -4166,12 +4166,12 @@ _PyType_FromMetaclass_impl(
goto finally;
}
if (slot->pfunc == NULL) {
PyObject_Free(tp_doc);
PyMem_Free(tp_doc);
tp_doc = NULL;
}
else {
size_t len = strlen(slot->pfunc)+1;
tp_doc = PyObject_Malloc(len);
tp_doc = PyMem_Malloc(len);
if (tp_doc == NULL) {
PyErr_NoMemory();
goto finally;
@ -4501,7 +4501,7 @@ _PyType_FromMetaclass_impl(
Py_CLEAR(res);
}
Py_XDECREF(bases);
PyObject_Free(tp_doc);
PyMem_Free(tp_doc);
Py_XDECREF(ht_name);
PyMem_Free(_ht_tpname);
return (PyObject*)res;
@ -5099,7 +5099,7 @@ type_dealloc(PyObject *self)
/* A type's tp_doc is heap allocated, unlike the tp_doc slots
* of most other objects. It's okay to cast it to char *.
*/
PyObject_Free((char *)type->tp_doc);
PyMem_Free((char *)type->tp_doc);
PyHeapTypeObject *et = (PyHeapTypeObject *)type;
Py_XDECREF(et->ht_name);