[Python-checkins] bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021)

INADA Naoki webhook-mailer at python.org
Mon May 21 10:51:03 EDT 2018


https://github.com/python/cpython/commit/2b4ed5da1d599190c3be0084ee235b0a8f0a75ea
commit: 2b4ed5da1d599190c3be0084ee235b0a8f0a75ea
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: INADA Naoki <methane at users.noreply.github.com>
date: 2018-05-21T23:51:00+09:00
summary:

bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021)

(cherry picked from commit 1179f4b40f375af5c59cd4b6be9cc313fa0e1a37)

Co-authored-by: INADA Naoki <methane at users.noreply.github.com>

files:
M Doc/c-api/gcsupport.rst
M Modules/gcmodule.c

diff --git a/Doc/c-api/gcsupport.rst b/Doc/c-api/gcsupport.rst
index f5e0d7ec9c79..7f54b6a9cff8 100644
--- a/Doc/c-api/gcsupport.rst
+++ b/Doc/c-api/gcsupport.rst
@@ -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)
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 8ba1093c029d..09c73569360e 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -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);



More information about the Python-checkins mailing list