From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 21 May 2018 14:10:27 +0000 (-0700) Subject: bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021) X-Git-Tag: v2.7.16rc1~298 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ccc31386da5f35f83756a265429831d650db731;p=thirdparty%2FPython%2Fcpython.git bpo-33583: Add note in PyObject_GC_Resize() doc (GH-7021) (cherry picked from commit 1179f4b40f375af5c59cd4b6be9cc313fa0e1a37) Co-authored-by: INADA Naoki --- diff --git a/Doc/c-api/gcsupport.rst b/Doc/c-api/gcsupport.rst index 9438feaeb18a..18ecd071d7a3 100644 --- a/Doc/c-api/gcsupport.rst +++ b/Doc/c-api/gcsupport.rst @@ -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 diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 916e4817d93e..19011c47b5c4 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -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);