]> granicus.if.org Git - python/commitdiff
bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021)
authorINADA Naoki <methane@users.noreply.github.com>
Mon, 21 May 2018 09:35:41 +0000 (18:35 +0900)
committerGitHub <noreply@github.com>
Mon, 21 May 2018 09:35:41 +0000 (18:35 +0900)
Doc/c-api/gcsupport.rst
Modules/gcmodule.c

index f5e0d7ec9c79c368f90e22b20785e5e31cfa528c..7f54b6a9cff8c5b97e725f4234d3d478e5a327f3 100644 (file)
@@ -49,7 +49,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.
 
 
 .. c:function:: void PyObject_GC_Track(PyObject *op)
index 8ba1093c029d1ab69085a3761daef8950884a7f9..09c73569360e6759cf7ceb140d826ad211320a0f 100644 (file)
@@ -1752,6 +1752,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);