summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_StringIO.py3
-rw-r--r--Misc/NEWS7
-rw-r--r--Modules/cStringIO.c1
3 files changed, 9 insertions, 2 deletions
diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py
index c318eaa..6842c5e 100644
--- a/Lib/test/test_StringIO.py
+++ b/Lib/test/test_StringIO.py
@@ -49,9 +49,10 @@ class TestGenericStringIO(unittest.TestCase):
f.seek(10)
f.truncate()
eq(f.getvalue(), 'abcdefghij')
- f.seek(0)
f.truncate(5)
eq(f.getvalue(), 'abcde')
+ f.write('xyz')
+ eq(f.getvalue(), 'abcdexyz')
f.close()
self.assertRaises(ValueError, f.write, 'frobnitz')
diff --git a/Misc/NEWS b/Misc/NEWS
index a8aee9c..6b1dcff 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -41,6 +41,11 @@ Core and builtins
Extension modules
-----------------
+- Patch 1012740: truncate() on a writeable cStringIO now resets the
+ position to the end of the stream. This is consistent with the original
+ StringIO module and avoids inadvertently resurrecting data that was
+ supposed to have been truncated away.
+
- Added socket.socketpair().
Library
@@ -59,7 +64,7 @@ Library
- A new function tkFont.nametofont was added to return an existing
font. The Font class constructor now has an additional exists argument
which, if True, requests to return/configure an existing font, rather
- than creating a new one.
+ than creating a new one.
- Updated the decimal package's min() and max() methods to match the
latest revision of the General Decimal Arithmetic Specification.
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 7e75879..b7333fd 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -289,6 +289,7 @@ IO_truncate(IOobject *self, PyObject *args) {
if (pos < 0) pos = self->pos;
if (self->string_size > pos) self->string_size = pos;
+ self->pos = self->string_size;
Py_INCREF(Py_None);
return Py_None;