• 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
..
bdist_wininst Loading commit data...
clinic Loading commit data...
external Loading commit data...
icons Loading commit data...
WinMain.c Loading commit data...
_findvs.cpp Loading commit data...
_msi.c Loading commit data...
_testconsole.c Loading commit data...
config.c Loading commit data...
dl_nt.c Loading commit data...
empty.c Loading commit data...
errmap.h Loading commit data...
errmap.mak Loading commit data...
frozen_dllmain.c Loading commit data...
generrmap.c Loading commit data...
getpathp.c Loading commit data...
invalid_parameter_handler.c Loading commit data...
launcher.c Loading commit data...
msvcrtmodule.c Loading commit data...
pyconfig.h Loading commit data...
pylauncher.rc Loading commit data...
pyshellext.cpp Loading commit data...
pyshellext.def Loading commit data...
pyshellext.idl Loading commit data...
pyshellext.rc Loading commit data...
pyshellext_d.def Loading commit data...
python.manifest Loading commit data...
python3.def Loading commit data...
python3dll.c Loading commit data...
python_exe.rc Loading commit data...
python_nt.rc Loading commit data...
python_ver_rc.h Loading commit data...
pythonw_exe.rc Loading commit data...
readme.txt Loading commit data...
sqlite3.rc Loading commit data...
testpy.py Loading commit data...
validate_ucrtbase.py Loading commit data...
winreg.c Loading commit data...
winsound.c Loading commit data...