Commit cffcc8b1 authored by Martin v. Löwis's avatar Martin v. Löwis

Make cStringIO.truncate raise IOError for negative

arguments (even for -1). Fixes the last bit of
#1359365.
parent 283a1353
......@@ -62,6 +62,7 @@ class TestGenericStringIO(unittest.TestCase):
eq(f.getvalue(), 'abcde')
f.write('xyz')
eq(f.getvalue(), 'abcdexyz')
self.assertRaises(IOError, f.truncate, -1)
f.close()
self.assertRaises(ValueError, f.write, 'frobnitz')
......
......@@ -101,6 +101,9 @@ Core and builtins
Library
-------
- cStringIO.truncate(-1) now raises an IOError, like StringIO and
regular files.
- Patch #1472877: Fix Tix subwidget name resolution.
- Patch #1594554: Always close a tkSimpleDialog on ok(), even
......
......@@ -289,7 +289,17 @@ IO_truncate(IOobject *self, PyObject *args) {
if (!IO__opencheck(self)) return NULL;
if (!PyArg_ParseTuple(args, "|n:truncate", &pos)) return NULL;
if (pos < 0) pos = self->pos;
if (PyTuple_Size(args) == 0) {
/* No argument passed, truncate to current position */
pos = self->pos;
}
if (pos < 0) {
errno = EINVAL;
PyErr_SetFromErrno(PyExc_IOError);
return NULL;
}
if (self->string_size > pos) self->string_size = pos;
self->pos = self->string_size;
......
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