]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 21 May 2018 14:10:27 +0000 (07:10 -0700)
committerGitHub <noreply@github.com>
Mon, 21 May 2018 14:10:27 +0000 (07:10 -0700)
(cherry picked from commit 1179f4b40f375af5c59cd4b6be9cc313fa0e1a37)

Co-authored-by: INADA Naoki <methane@users.noreply.github.com>
Doc/c-api/gcsupport.rst
Modules/gcmodule.c

index 9438feaeb18af73de21dc252f28d4034e1addb4b..18ecd071d7a3d6a02e3d1cff8cb661f7631dedd7 100644 (file)
@@ -56,7 +56,7 @@ Constructors for container types must conform to two rules:
 .. c:function:: TYPE* PyObject_GC_Resize(TYPE, PyVarObject *op, Py_ssize_t newsize)
 
    Resize an object allocated by :c:func:`PyObject_NewVar`.  Returns the
-   resized object or *NULL* on failure.
+   resized object or *NULL* on failure.  *op* must not be tracked by the collector yet.
 
    .. versionchanged:: 2.5
       This function used an :c:type:`int` type for *newsize*. This might
index 916e4817d93ec5ecd00a7e9f884b62fa32781c4e..19011c47b5c449de664f9cb739c8b573529a1c0c 100644 (file)
@@ -1539,6 +1539,7 @@ _PyObject_GC_Resize(PyVarObject *op, Py_ssize_t nitems)
 {
     const size_t basicsize = _PyObject_VAR_SIZE(Py_TYPE(op), nitems);
     PyGC_Head *g = AS_GC(op);
+    assert(!IS_TRACKED(op));
     if (basicsize > PY_SSIZE_T_MAX - sizeof(PyGC_Head))
         return (PyVarObject *)PyErr_NoMemory();
     g = (PyGC_Head *)PyObject_REALLOC(g,  sizeof(PyGC_Head) + basicsize);