From: Kurt B. Kaiser Date: Fri, 29 Nov 2002 22:10:53 +0000 (+0000) Subject: Correct an error introduced at Rev 1.30. The keyword arg is necessary X-Git-Tag: v2.3c1~3192 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=818855939ac016492cb59d1fc2fea94cc0764855;p=thirdparty%2FPython%2Fcpython.git Correct an error introduced at Rev 1.30. The keyword arg is necessary to freeze the value of orig_checkcache. Otherwise infinite recursion. --- diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index ffd8767fb565..ad8263d68183 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -45,15 +45,16 @@ else: file.write(warnings.formatwarning(message, category, filename, lineno)) warnings.showwarning = idle_showwarning -def linecache_checkcache(): +def extended_linecache_checkcache(orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the entries - Rather than repeating the linecache code, patch it by saving the pyshell# - entries, call linecache.checkcache(), and then restore the saved - entries. + Rather than repeating the linecache code, patch it to save the pyshell# + entries, call the original linecache.checkcache(), and then restore the + saved entries. Assigning the orig_checkcache keyword arg freezes its value + at definition time to the (original) method linecache.checkcache(), i.e. + makes orig_checkcache lexical. """ - orig_checkcache=linecache.checkcache cache = linecache.cache save = {} for filename in cache.keys(): @@ -62,7 +63,8 @@ def linecache_checkcache(): orig_checkcache() cache.update(save) -linecache.checkcache = linecache_checkcache +# Patch linecache.checkcache(): +linecache.checkcache = extended_linecache_checkcache class PyShellEditorWindow(EditorWindow):