mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
gh-114569: Use PyMem_* APIs for most non-PyObject uses (#114574)
Fix usage in Modules, Objects, and Parser subdirectories.
This commit is contained in:
parent
d0f7f5c41d
commit
dcd28b5c35
7 changed files with 36 additions and 33 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue