Mercurial > cpython-lru_cache-weakref
diff Lib/idlelib/PyShell.py @ 84096:da852f5250af 3.3
#5492: Avoid traceback when exiting IDLE caused by a race condition.
| author | Roger Serwy <roger.serwy@gmail.com> |
|---|---|
| date | Tue, 11 Jun 2013 22:13:17 -0500 |
| parents | 2fe64ce5da05 |
| children | c15d0baac3d6 187da33826eb |
line wrap: on
line diff
--- a/Lib/idlelib/PyShell.py Tue Jun 11 14:38:39 2013 -0700 +++ b/Lib/idlelib/PyShell.py Tue Jun 11 22:13:17 2013 -0500 @@ -367,6 +367,7 @@ self.port = PORT self.original_compiler_flags = self.compile.compiler.flags + _afterid = None rpcclt = None rpcsubproc = None @@ -486,6 +487,8 @@ 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.listening_sock.close() except AttributeError: # no socket @@ -561,8 +564,8 @@ 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 @@ -973,10 +976,6 @@ 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):
