diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2020-11-21 10:39:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-21 10:39:23 (GMT) |
commit | 648a32b12ec676036ae4115747d458fb6f379d74 (patch) | |
tree | ed07de3934155e631c8997470eb8554ec3b1198b /Doc/c-api | |
parent | 97136d71a78a4b6b816f7e14acc52be426efcb6f (diff) | |
download | cpython-648a32b12ec676036ae4115747d458fb6f379d74.zip cpython-648a32b12ec676036ae4115747d458fb6f379d74.tar.gz cpython-648a32b12ec676036ae4115747d458fb6f379d74.tar.bz2 |
bpo-42412: Fix possible leaks and check arguments in PyType_FromModuleAndSpec() (GH-23410)
* There were leaks if Py_tp_bases is used more than once or if some call is
failed before setting tp_bases.
* There was a crash if the bases argument or the Py_tp_bases slot is not a tuple.
* The documentation was not accurate.
(cherry picked from commit 1db76394ea79030aa4ed5349c950f6c6da51450f)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Diffstat (limited to 'Doc/c-api')
-rw-r--r-- | Doc/c-api/type.rst | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Doc/c-api/type.rst b/Doc/c-api/type.rst index dcdec53..2a6d618 100644 --- a/Doc/c-api/type.rst +++ b/Doc/c-api/type.rst @@ -124,7 +124,8 @@ The following functions and structs are used to create If *bases* is a tuple, the created heap type contains all types contained in it as base types. - If *bases* is ``NULL``, the *Py_tp_base* slot is used instead. + If *bases* is ``NULL``, the *Py_tp_bases* slot is used instead. + If that also is ``NULL``, the *Py_tp_base* slot is used instead. If that also is ``NULL``, the new type derives from :class:`object`. This function calls :c:func:`PyType_Ready` on the new type. @@ -194,7 +195,8 @@ The following functions and structs are used to create * :c:member:`~PyBufferProcs.bf_getbuffer` * :c:member:`~PyBufferProcs.bf_releasebuffer` - Setting :c:data:`Py_tp_bases` may be problematic on some platforms. + Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be + problematic on some platforms. To avoid issues, use the *bases* argument of :py:func:`PyType_FromSpecWithBases` instead. |