• Tim Peters's avatar
    SF bug 801631: file.truncate fault on windows. · f1827cfa
    Tim Peters yazdı
    file_truncate():  C doesn't define what fflush(fp) does if fp is open
    for update, and the preceding I/O operation on fp was input.  On Windows,
    fflush() actually changes the current file position then.  Because
    Windows doesn't support ftruncate() directly, this not only caused
    Python's file.truncate() to change the file position (contra our docs),
    it also caused the file not to change size.
    
    Repaired by getting the initial file position at the start, restoring
    it at the end, and tossing all the complicated micro-efficiency checks
    trying to avoid "provably unnecessary" seeks.  file.truncate() can't
    be a frequent operation, and seeking to the current file position has
    got to be cheap anyway.
    
    Bugfix candidate.
    f1827cfa
test_file.py 3.77 KB