[ https://issues.apache.org/jira/browse/MODPYTHON-179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Graham Dumpleton closed MODPYTHON-179. -------------------------------------- > req.readlines(sizehint) does not work correctly > ----------------------------------------------- > > Key: MODPYTHON-179 > URL: https://issues.apache.org/jira/browse/MODPYTHON-179 > Project: mod_python > Issue Type: Bug > Components: core > Affects Versions: 3.2.8 > Environment: All > Reporter: Jim Gallacher > Assigned To: 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. - You can reply to this email to add a comment to the issue online.