diff --git a/Lib/test/output/test_StringIO b/Lib/test/output/test_StringIO index e2b28931c50..992d5340d97 100644 --- a/Lib/test/output/test_StringIO +++ b/Lib/test/output/test_StringIO @@ -4,6 +4,7 @@ klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 2 'abcuvwxyz!' +'abc' 'abcdefghij' 'abcde' Caught expected ValueError writing to closed StringIO: @@ -13,6 +14,7 @@ klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 2 'abcuvwxyz!' +'abc' 'abcdefghij' 'abcde' Caught expected ValueError writing to closed StringIO: diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py index ea237cd138a..8d3c85142aa 100644 --- a/Lib/test/test_StringIO.py +++ b/Lib/test/test_StringIO.py @@ -14,6 +14,13 @@ def do_test(module): f.write('!') print `f.getvalue()` f.close() + + f = module.StringIO() + f.writelines(["a", "b", "c"]) + f.seek(0) + print `f.getvalue()` + f.close() + f = module.StringIO() f.write(s) f.seek(10) @@ -31,7 +38,6 @@ def do_test(module): else: print "Failed to catch ValueError writing to closed StringIO." -# Don't bother testing cStringIO without import StringIO, cStringIO do_test(StringIO) do_test(cStringIO) diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index 1cb40ea8bdc..ddf369901a5 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -460,20 +460,23 @@ static char O_writelines__doc__[] = static PyObject * O_writelines(Oobject *self, PyObject *args) { PyObject *tmp = 0; - static PyObject *string_joinfields = 0; + static PyObject *joiner = NULL; UNLESS (PyArg_ParseTuple(args, "O:writelines", &args)) return NULL; - if (!string_joinfields) { - UNLESS (tmp = PyImport_ImportModule("string")) return NULL; - string_joinfields=PyObject_GetAttrString(tmp, "joinfields"); - Py_DECREF(tmp); - UNLESS (string_joinfields) return NULL; - } + if (!joiner) { + PyObject *empty_string = PyString_FromString(""); + if (empty_string == NULL) + return NULL; + joiner = PyObject_GetAttrString(empty_string, "join"); + Py_DECREF(empty_string); + if (joiner == NULL) + return NULL; + } if (PyObject_Size(args) < 0) return NULL; - tmp = PyObject_CallFunction(string_joinfields, "Os", args, ""); + tmp = PyObject_CallFunction(joiner, "O", args); UNLESS (tmp) return NULL; args = Py_BuildValue("(O)", tmp);