Kaydet (Commit) f90d5292 authored tarafından Guido van Rossum's avatar Guido van Rossum

Provisional fix for writefile() [SF bug # 541730].

The problem was that an exception can occur in the text.get() call or
in the write() call, when the text buffer contains non-ASCII
characters.  This causes the previous contents of the file to be lost.

The provisional fix is to call str(self.text.get(...)) *before*
opening the file, so that if the exception occurs, we never open the
file.

Two orthogonal better solutions have to wait for policy decisions:

1. We could try to encode the data as Latin-1 or as UTF-8; but that
   would require IDLE to grow a notion of file encoding which requires
   more thought.

2. We could make backups before overwriting a file.  This requires
   more thought because it needs to be fast and cross-platform and
   configurable.
üst a258324a
......@@ -148,9 +148,9 @@ class IOBinding:
def writefile(self, filename):
self.fixlastline()
chars = str(self.text.get("1.0", "end-1c"))
try:
f = open(filename, "w")
chars = self.text.get("1.0", "end-1c")
f.write(chars)
f.close()
## print "saved to", `filename`
......
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