#5492: Avoid traceback when exiting IDLE caused by a race condition.
This commit is contained in:
parent
c94f07de77
commit
16ce43a6d8
|
@ -370,6 +370,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
self.port = PORT
|
||||
self.original_compiler_flags = self.compile.compiler.flags
|
||||
|
||||
_afterid = None
|
||||
rpcclt = None
|
||||
rpcpid = None
|
||||
|
||||
|
@ -497,6 +498,8 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
threading.Thread(target=self.__request_interrupt).start()
|
||||
|
||||
def kill_subprocess(self):
|
||||
if self._afterid is not None:
|
||||
self.tkconsole.text.after_cancel(self._afterid)
|
||||
try:
|
||||
self.rpcclt.close()
|
||||
except AttributeError: # no socket
|
||||
|
@ -569,8 +572,8 @@ class ModifiedInterpreter(InteractiveInterpreter):
|
|||
pass
|
||||
# Reschedule myself
|
||||
if not self.tkconsole.closing:
|
||||
self.tkconsole.text.after(self.tkconsole.pollinterval,
|
||||
self.poll_subprocess)
|
||||
self._afterid = self.tkconsole.text.after(
|
||||
self.tkconsole.pollinterval, self.poll_subprocess)
|
||||
|
||||
debugger = None
|
||||
|
||||
|
@ -987,10 +990,6 @@ class PyShell(OutputWindow):
|
|||
self.stop_readline()
|
||||
self.canceled = True
|
||||
self.closing = True
|
||||
# Wait for poll_subprocess() rescheduling to stop
|
||||
self.text.after(2 * self.pollinterval, self.close2)
|
||||
|
||||
def close2(self):
|
||||
return EditorWindow.close(self)
|
||||
|
||||
def _close(self):
|
||||
|
|
Loading…
Reference in New Issue