summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/PyShell.py
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2011-12-14 23:03:31 (GMT)
committerNed Deily <nad@acm.org>2011-12-14 23:03:31 (GMT)
commit1b0b6ae36bfdf01a34c040a8ee8e4d9926c7443f (patch)
treee9bd7fd078324699f410db63f16479a8c1f6bdc7 /Lib/idlelib/PyShell.py
parent77e1bfc3777a318232e0816c4a9a15fc7955d80d (diff)
parentf505b7425c1e46e847dfc1e4528bc178af06b085 (diff)
downloadcpython-1b0b6ae36bfdf01a34c040a8ee8e4d9926c7443f.zip
cpython-1b0b6ae36bfdf01a34c040a8ee8e4d9926c7443f.tar.gz
cpython-1b0b6ae36bfdf01a34c040a8ee8e4d9926c7443f.tar.bz2
Issue #4625: If IDLE cannot write to its recent file or breakpoint
files, display a message popup and continue rather than crash. (original patch by Roger Serwy)
Diffstat (limited to 'Lib/idlelib/PyShell.py')
-rw-r--r--Lib/idlelib/PyShell.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index ea3a5d9..86e4eed 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -206,14 +206,22 @@ class PyShellEditorWindow(EditorWindow):
lines = fp.readlines()
except IOError:
lines = []
- with open(self.breakpointPath, "w") as new_file:
- for line in lines:
- if not line.startswith(filename + '='):
- new_file.write(line)
- self.update_breakpoints()
- breaks = self.breakpoints
- if breaks:
- new_file.write(filename + '=' + str(breaks) + '\n')
+ try:
+ with open(self.breakpointPath, "w") as new_file:
+ for line in lines:
+ if not line.startswith(filename + '='):
+ new_file.write(line)
+ self.update_breakpoints()
+ breaks = self.breakpoints
+ if breaks:
+ new_file.write(filename + '=' + str(breaks) + '\n')
+ except IOError as err:
+ if not getattr(self.root, "breakpoint_error_displayed", False):
+ self.root.breakpoint_error_displayed = True
+ tkMessageBox.showerror(title='IDLE Error',
+ message='Unable to update breakpoint list:\n%s'
+ % str(err),
+ parent=self.text)
def restore_file_breaks(self):
self.text.update() # this enables setting "BREAK" tags to be visible