• Christian Tismer's avatar
    bpo-33738: Fix macros which contradict PEP 384 (GH-7477) · ea62ce7f
    Christian Tismer yazdı
    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
    ea62ce7f
Adı
Son kayıt (commit)
Son güncelleme
..
buildbot Loading commit data...
c-globals Loading commit data...
ccbench Loading commit data...
clinic Loading commit data...
demo Loading commit data...
freeze Loading commit data...
gdb Loading commit data...
i18n Loading commit data...
importbench Loading commit data...
iobench Loading commit data...
msi Loading commit data...
nuget Loading commit data...
parser Loading commit data...
pynche Loading commit data...
scripts Loading commit data...
ssl Loading commit data...
stringbench Loading commit data...
test2to3 Loading commit data...
tz Loading commit data...
unicode Loading commit data...
unittestgui Loading commit data...
README Loading commit data...