• 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
.github Loading commit data...
.vsts Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Programs Loading commit data...
Python Loading commit data...
Tools Loading commit data...
m4 Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
README.rst Loading commit data...
aclocal.m4 Loading commit data...
config.guess Loading commit data...
config.sub Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...