]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Update PyObject_Del() documentation (#122597)
authorVictor Stinner <vstinner@python.org>
Fri, 2 Aug 2024 10:13:33 +0000 (12:13 +0200)
committerGitHub <noreply@github.com>
Fri, 2 Aug 2024 10:13:33 +0000 (12:13 +0200)
Replace PyMem_Del() with PyMem_Free().

Doc/c-api/allocation.rst
Doc/c-api/memory.rst
Modules/_sre/sre.c
Modules/_testcapi/heaptype.c

index b3609c233156b6e02e530b53083e347c271c20a9..0d53b18ea87d5e27d8ba44258635b30e36a9f2ce 100644 (file)
@@ -54,12 +54,7 @@ Allocating Objects on the Heap
 
 .. c:function:: void PyObject_Del(void *op)
 
-   Releases memory allocated to an object using :c:macro:`PyObject_New` or
-   :c:macro:`PyObject_NewVar`.  This is normally called from the
-   :c:member:`~PyTypeObject.tp_dealloc` handler specified in the object's type.  The fields of
-   the object should not be accessed after this call as the memory is no
-   longer a valid Python object.
-
+   Same as :c:func:`PyObject_Free`.
 
 .. c:var:: PyObject _Py_NoneStruct
 
index 9da09a21607f617313bbc319573f2793a75c420f..4ecc998b37e598ea09c7eb5b1c83cfbd2614ed50 100644 (file)
@@ -734,7 +734,7 @@ The same code using the type-oriented function set::
        return PyErr_NoMemory();
    /* ...Do some I/O operation involving buf... */
    res = PyBytes_FromString(buf);
-   PyMem_Del(buf); /* allocated with PyMem_New */
+   PyMem_Free(buf); /* allocated with PyMem_New */
    return res;
 
 Note that in the two examples above, the buffer is always manipulated via
@@ -750,11 +750,11 @@ allocators operating on different heaps. ::
    ...
    PyMem_Del(buf3);  /* Wrong -- should be PyMem_Free() */
    free(buf2);       /* Right -- allocated via malloc() */
-   free(buf1);       /* Fatal -- should be PyMem_Del()  */
+   free(buf1);       /* Fatal -- should be PyMem_Free()  */
 
 In addition to the functions aimed at handling raw memory blocks from the Python
 heap, objects in Python are allocated and released with :c:macro:`PyObject_New`,
-:c:macro:`PyObject_NewVar` and :c:func:`PyObject_Del`.
+:c:macro:`PyObject_NewVar` and :c:func:`PyObject_Free`.
 
 These will be explained in the next chapter on defining and implementing new
 object types in C.
index 0a888af31b04970af18a4a9bf10551aedba11c60..01420d1a10b1cff1ae936194b6647512e002a4dc 100644 (file)
@@ -530,7 +530,7 @@ state_fini(SRE_STATE* state)
         PyBuffer_Release(&state->buffer);
     Py_XDECREF(state->string);
     data_stack_dealloc(state);
-    /* See above PyMem_Del for why we explicitly cast here. */
+    /* See above PyMem_Free() for why we explicitly cast here. */
     PyMem_Free((void*) state->mark);
     state->mark = NULL;
 }
index 4526583a8059d95facb1ece57b7e748594788866..b45b890b88d81fdec07a22cbc7d6275620890ff0 100644 (file)
@@ -269,16 +269,16 @@ test_type_from_ephemeral_spec(PyObject *self, PyObject *Py_UNUSED(ignored))
     // (Explicitly overwrite memory before freeing,
     // so bugs show themselves even without the debug allocator's help.)
     memset(spec, 0xdd, sizeof(PyType_Spec));
-    PyMem_Del(spec);
+    PyMem_Free(spec);
     spec = NULL;
     memset(name, 0xdd, sizeof(NAME));
-    PyMem_Del(name);
+    PyMem_Free(name);
     name = NULL;
     memset(doc, 0xdd, sizeof(DOC));
-    PyMem_Del(doc);
+    PyMem_Free(doc);
     doc = NULL;
     memset(slots, 0xdd, 3 * sizeof(PyType_Slot));
-    PyMem_Del(slots);
+    PyMem_Free(slots);
     slots = NULL;
 
     /* check that everything works */
@@ -304,10 +304,10 @@ test_type_from_ephemeral_spec(PyObject *self, PyObject *Py_UNUSED(ignored))
 
     result = Py_NewRef(Py_None);
   finally:
-    PyMem_Del(spec);
-    PyMem_Del(name);
-    PyMem_Del(doc);
-    PyMem_Del(slots);
+    PyMem_Free(spec);
+    PyMem_Free(name);
+    PyMem_Free(doc);
+    PyMem_Free(slots);
     Py_XDECREF(class);
     Py_XDECREF(instance);
     Py_XDECREF(obj);