• Amaury Forgeot d'Arc's avatar
    Backport for issue1265 (pdb bug with "with" statement). · c572dc37
    Amaury Forgeot d'Arc yazdı
    When an unfinished generator-iterator is garbage collected, PyEval_EvalFrameEx
    is called with a GeneratorExit exception set.  This leads to funny results
    if the sys.settrace function itself makes use of generators.
    A visible effect is that the settrace function is reset to None.
    Another is that the eventual "finally" block of the generator is not called.
    
    It is necessary to save/restore the exception around the call to the trace
    function.
    
    This happens a lot with py3k: isinstance() of an ABCMeta instance runs
        def __instancecheck__(cls, instance):
            """Override for isinstance(instance, cls)."""
            return any(cls.__subclasscheck__(c)
                       for c in {instance.__class__, type(instance)})
    which lets an opened generator expression each time it returns True.
    
    And the problem can be reproduced in 2.5 with pure python code.
    c572dc37
Adı
Son kayıt (commit)
Son güncelleme
..
Python-ast.c Loading commit data...
asdl.c Loading commit data...
ast.c Loading commit data...
atof.c Loading commit data...
bltinmodule.c Loading commit data...
ceval.c Loading commit data...
codecs.c Loading commit data...
compile.c Loading commit data...
dup2.c Loading commit data...
dynload_aix.c Loading commit data...
dynload_atheos.c Loading commit data...
dynload_beos.c Loading commit data...
dynload_dl.c Loading commit data...
dynload_hpux.c Loading commit data...
dynload_next.c Loading commit data...
dynload_os2.c Loading commit data...
dynload_shlib.c Loading commit data...
dynload_stub.c Loading commit data...
dynload_win.c Loading commit data...
errors.c Loading commit data...
fmod.c Loading commit data...
frozen.c Loading commit data...
frozenmain.c Loading commit data...
future.c Loading commit data...
getargs.c Loading commit data...
getcompiler.c Loading commit data...
getcopyright.c Loading commit data...
getcwd.c Loading commit data...
getmtime.c Loading commit data...
getopt.c Loading commit data...
getplatform.c Loading commit data...
getversion.c Loading commit data...
graminit.c Loading commit data...
hypot.c Loading commit data...
import.c Loading commit data...
importdl.c Loading commit data...
importdl.h Loading commit data...
mactoolboxglue.c Loading commit data...
marshal.c Loading commit data...
memmove.c Loading commit data...
modsupport.c Loading commit data...
mysnprintf.c Loading commit data...
mystrtoul.c Loading commit data...
pyarena.c Loading commit data...
pyfpe.c Loading commit data...
pystate.c Loading commit data...
pystrtod.c Loading commit data...
pythonrun.c Loading commit data...
sigcheck.c Loading commit data...
strdup.c Loading commit data...
strerror.c Loading commit data...
strtod.c Loading commit data...
structmember.c Loading commit data...
symtable.c Loading commit data...
sysmodule.c Loading commit data...
thread.c Loading commit data...
thread_atheos.h Loading commit data...
thread_beos.h Loading commit data...
thread_cthread.h Loading commit data...
thread_foobar.h Loading commit data...
thread_lwp.h Loading commit data...
thread_nt.h Loading commit data...
thread_os2.h Loading commit data...
thread_pth.h Loading commit data...
thread_pthread.h Loading commit data...
thread_sgi.h Loading commit data...
thread_solaris.h Loading commit data...
thread_wince.h Loading commit data...
traceback.c Loading commit data...