• Nick Coghlan's avatar
    [3.5] bpo-29537: Tolerate legacy invalid bytecode (#169) · 93602e3a
    Nick Coghlan yazdı
    bpo-27286 fixed a problem where BUILD_MAP_UNPACK_WITH_CALL could
    be emitted with an incorrect oparg value, causing the eval loop
    to access the wrong stack entry when attempting to read the
    function name.
    
    The associated magic number change caused significant problems when
    attempting to upgrade to 3.5.3 for anyone that relies on pre-cached
    bytecode remaining valid across maintenance releases.
    
    This patch restores the ability to import legacy bytecode generated
    by 3.5.0, 3.5.1 or 3.5.2, and modifies the eval loop to
    avoid any harmful consequences from the potentially malformed legacy
    bytecode.
    
    Original import patch by Petr Viktorin, eval loop patch by Serhiy Storchaka,
    and tests and integration by Nick Coghlan.
    93602e3a
pythonrun.c 42 KB