[ http://issues.apache.org/jira/browse/MODPYTHON-179?page=all ] Nicolas Lehuen resolved MODPYTHON-179: --------------------------------------
Fix Version: 3.3 Resolution: Fixed Fixed and added two unit tests on the trunk. Apply revision #420288 if this needs to be backported on the 3.2 branch. > req.readlines(sizehint) does not work correctly > ----------------------------------------------- > > Key: MODPYTHON-179 > URL: http://issues.apache.org/jira/browse/MODPYTHON-179 > Project: mod_python > Type: Bug > Components: core > Versions: 3.2.8 > Environment: All > Reporter: Jim Gallacher > Assignee: Jim Gallacher > Priority: Minor > Fix For: 3.3 > > A bug in req_readlines(sizehint) in requestobject.c causes output to be > returned prematurely for any value of the optional sizehint argument. > The faulty bit of code is: > line = req_readline(self, rlargs); > while (line && (PyString_Size(line)>0)) { > PyList_Append(result, line); > size += PyString_Size(line); > if ((sizehint != -1) && (size >= size)) > break; > line = req_readline(self, args); > } > Since (size >= size) will always be true, reading the input stream will end > prematurely for any value of sizehint != -1. > This code will fix the problem. > --- requestobject.c (revision 417294) > +++ requestobject.c (working copy) > @@ -1154,7 +1154,7 @@ > while (line && (PyString_Size(line)>0)) { > PyList_Append(result, line); > size += PyString_Size(line); > - if ((sizehint != -1) && (size >= size)) > + if ((sizehint != -1) && (size >= sizehint)) > break; > line = req_readline(self, args); > } > Once that is fixed the documentation needs to be revised, as it does not > accurately reflect the behaviour of the code. > Currently the docs are: > """Reads all or up to sizehint bytes of lines using readline and returns a > list of the lines read.""" > whereas the code can read beyond sizehint. The total read could actually be > sizehint + len(line) where line is the last line read. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira