Commit fed9b914 authored by Guido van Rossum's avatar Guido van Rossum

Extend _close() to break cycles.

Break some other cycles too (and destroy the root when done).
parent 205afb48
......@@ -363,12 +363,13 @@ class PyShell(OutputWindow):
# Helper for ModifiedInterpreter
self.resetoutput()
self.executing = 1
self._cancel_check = self.cancel_check
##self._cancel_check = self.cancel_check
##sys.settrace(self._cancel_check)
def endexecuting(self):
# Helper for ModifiedInterpreter
sys.settrace(None)
##sys.settrace(None)
##self._cancel_check = None
self.executing = 0
self.canceled = 0
......@@ -386,9 +387,9 @@ class PyShell(OutputWindow):
if self.reading:
self.top.quit()
return "cancel"
reply = PyShellEditorWindow.close(self)
if reply != "cancel":
self.flist.pyshell = None
return PyShellEditorWindow.close(self)
def _close(self):
# Restore std streams
sys.stdout = self.save_stdout
sys.stderr = self.save_stderr
......@@ -396,7 +397,10 @@ class PyShell(OutputWindow):
# Break cycles
self.interp = None
self.console = None
return reply
self.auto = None
self.flist.pyshell = None
self.history = None
OutputWindow._close(self) # Really EditorWindow._close
def ispythonsource(self, filename):
# Override this so EditorWindow never removes the colorizer
......@@ -731,6 +735,7 @@ def main():
shell.begin()
root.mainloop()
root.destroy()
if __name__ == "__main__":
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment