summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2018-06-09 18:32:25 (GMT)
committerNed Deily <nad@python.org>2018-06-09 18:32:25 (GMT)
commitea62ce7f4fefc66bc0adba16bcd7666d5bbd5b44 (patch)
tree5c7d457be8b067d4ca35d033308b0bc5da9817af /PC
parent3f45f5da8eb052f1b54d37086c67b7094f35b67b (diff)
downloadcpython-ea62ce7f4fefc66bc0adba16bcd7666d5bbd5b44.zip
cpython-ea62ce7f4fefc66bc0adba16bcd7666d5bbd5b44.tar.gz
cpython-ea62ce7f4fefc66bc0adba16bcd7666d5bbd5b44.tar.bz2
bpo-33738: Fix macros which contradict PEP 384 (GH-7477)
During development of the limited API support for PySide, we saw an error in a macro that accessed a type field. This patch fixes the 7 errors in the Python headers. Macros which were not written as capitals were implemented as function. To do the necessary analysis again, a script was included that parses all headers and looks for "->tp_" in serctions which can be reached with active limited API. It is easily possible to call this script as a test. Error listing: ../../Include/objimpl.h:243 #define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \ (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o))) Action: commented only ../../Include/objimpl.h:362 #define PyType_SUPPORTS_WEAKREFS(t) ((t)->tp_weaklistoffset > 0) Action: commented only ../../Include/objimpl.h:364 #define PyObject_GET_WEAKREFS_LISTPTR(o) \ ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset)) Action: commented only ../../Include/pyerrors.h:143 #define PyExceptionClass_Name(x) \ ((char *)(((PyTypeObject*)(x))->tp_name)) Action: implemented function ../../Include/abstract.h:593 #define PyIter_Check(obj) \ ((obj)->ob_type->tp_iternext != NULL && \ (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented) Action: implemented function ../../Include/abstract.h:713 #define PyIndex_Check(obj) \ ((obj)->ob_type->tp_as_number != NULL && \ (obj)->ob_type->tp_as_number->nb_index != NULL) Action: implemented function ../../Include/abstract.h:924 #define PySequence_ITEM(o, i)\ ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) ) Action: commented only
Diffstat (limited to 'PC')
-rw-r--r--PC/python3.def3
1 files changed, 3 insertions, 0 deletions
diff --git a/PC/python3.def b/PC/python3.def
index 48a2d07..5d93c18 100644
--- a/PC/python3.def
+++ b/PC/python3.def
@@ -248,6 +248,7 @@ EXPORTS
PyExc_Warning=python38.PyExc_Warning DATA
PyExc_WindowsError=python38.PyExc_WindowsError DATA
PyExc_ZeroDivisionError=python38.PyExc_ZeroDivisionError DATA
+ PyExceptionClass_Name=python38.PyExceptionClass_Name
PyException_GetCause=python38.PyException_GetCause
PyException_GetContext=python38.PyException_GetContext
PyException_GetTraceback=python38.PyException_GetTraceback
@@ -294,9 +295,11 @@ EXPORTS
PyImport_ImportModuleLevelObject=python38.PyImport_ImportModuleLevelObject
PyImport_ImportModuleNoBlock=python38.PyImport_ImportModuleNoBlock
PyImport_ReloadModule=python38.PyImport_ReloadModule
+ PyIndex_Check=python38.PyIndex_Check
PyInterpreterState_Clear=python38.PyInterpreterState_Clear
PyInterpreterState_Delete=python38.PyInterpreterState_Delete
PyInterpreterState_New=python38.PyInterpreterState_New
+ PyIter_Check=python38.PyIter_Check
PyIter_Next=python38.PyIter_Next
PyListIter_Type=python38.PyListIter_Type DATA
PyListRevIter_Type=python38.PyListRevIter_Type DATA