- Issue #6939: Fix file I/O objects in the `io` module to keep the original
file position when calling `truncate()`. It would previously change the
file position to the given argument, which goes against the tradition of
ftruncate() and other truncation APIs. Patch by Pascal Chambon.
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index 91fecae..90a4c09 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -2313,15 +2313,7 @@
return NULL;
Py_DECREF(res);
- if (pos != Py_None) {
- res = PyObject_CallMethodObjArgs((PyObject *) self,
- _PyIO_str_seek, pos, NULL);
- if (res == NULL)
- return NULL;
- Py_DECREF(res);
- }
-
- return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, NULL);
+ return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, pos, NULL);
}
static PyObject *