From: Guido van Rossum Date: Mon, 8 Feb 1999 17:03:27 +0000 (+0000) Subject: The writelines() function was never tested and contained numerous bugs X-Git-Tag: v1.5.2b2~109 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68de0641ce97d820999b6ce8d67aa9b08823b8bf;p=python The writelines() function was never tested and contained numerous bugs (including a docstring saying "blah"). Fixed all this. (Please review for potential memory leaks!) --- diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c index 27be4980bf..bc37984cf8 100644 --- a/Modules/cStringIO.c +++ b/Modules/cStringIO.c @@ -343,13 +343,14 @@ O_flush(Oobject *self, PyObject *args) { } -static char O_writelines__doc__[] = "blah"; +static char O_writelines__doc__[] = +"writelines(sequence_of_strings): write each string"; static PyObject * O_writelines(Oobject *self, PyObject *args) { PyObject *string_module = 0; static PyObject *string_joinfields = 0; - UNLESS(PyArg_ParseTuple(args, "O", args)) { + UNLESS(PyArg_ParseTuple(args, "O", &args)) { return NULL; } @@ -370,8 +371,19 @@ O_writelines(Oobject *self, PyObject *args) { return NULL; } - return O_write(self, - PyObject_CallFunction(string_joinfields, "Os", args, "")); + { + PyObject *x = PyObject_CallFunction(string_joinfields, + "Os", args, ""); + if (x == NULL) + return NULL; + args = Py_BuildValue("(O)", x); + Py_DECREF(x); + if (args == NULL) + return NULL; + x = O_write(self, args); + Py_DECREF(args); + return x; + } } static struct PyMethodDef O_methods[] = {