The change in the linecache.checkcache() signature at rev 1.13 caused IDLE to exit

when an exception was raised while running w/o the subprocess.  Python Bug 1063840

M NEWS.txt
M PyShell.py
This commit is contained in:
Kurt B. Kaiser 2004-11-13 21:05:58 +00:00
parent 1681b62251
commit f7a8899f33
2 changed files with 11 additions and 6 deletions

View File

@ -3,6 +3,9 @@ What's New in IDLE 1.1b3/rc1?
*Release date: XX-XXX-2004* *Release date: XX-XXX-2004*
- A change to the linecache.py API caused IDLE to exit when an exception was
raised while running without the subprocess (-n switch). Python Bug 1063840.
What's New in IDLE 1.1b2? What's New in IDLE 1.1b2?
========================= =========================

View File

@ -73,14 +73,16 @@ else:
return s return s
warnings.formatwarning = idle_formatwarning warnings.formatwarning = idle_formatwarning
def extended_linecache_checkcache(orig_checkcache=linecache.checkcache): def extended_linecache_checkcache(filename=None,
orig_checkcache=linecache.checkcache):
"""Extend linecache.checkcache to preserve the <pyshell#...> entries """Extend linecache.checkcache to preserve the <pyshell#...> entries
Rather than repeating the linecache code, patch it to save the pyshell# Rather than repeating the linecache code, patch it to save the
entries, call the original linecache.checkcache(), and then restore the <pyshell#...> entries, call the original linecache.checkcache()
saved entries. Assigning the orig_checkcache keyword arg freezes its value (which destroys them), and then restore the saved entries.
at definition time to the (original) method linecache.checkcache(), i.e.
makes orig_checkcache lexical. orig_checkcache is bound at definition time to the original
method, allowing it to be patched.
""" """
cache = linecache.cache cache = linecache.cache