01-12-07 06:13 AM
This code in req.readlines() looks a bit fishy to me and possibly leaks memo
ry.
The code in question is:
rlargs = PyTuple_New(0);
if (result == NULL)
return PyErr_NoMemory();
line = req_readline(self, rlargs);
while (line && ((linesize=PyString_Size(line))>0)) {
PyList_Append(result, line);
size += linesize;
if ((sizehint != -1) && (size >= sizehint))
break;
Py_DECREF(line);
line = req_readline(self, args);
}
Py_XDECREF(line);
The thing that looks wrong is 'rlargs'. This is created, used in a sub call
to
req_readline() but then never destroyed. Thus, possibly a memory leak.
Next thing is that on the first read of a line, ie., call to req_readline(),
there will be no limit on size, as rlargs (empty tuple) is used. On subseque
nt
calls to req_readline() it passed the args from the caller instead of rlargs
.
Depending on how req_readline() is implemented, this may not work
how want might think it might. Will need to investigate further.
Graham
[ Post a follow-up to this message ]
|