On 25/10/2014 01:59, Konstantin Kolinko wrote: > 2014-10-25 3:27 GMT+04:00 <ma...@apache.org>: >> Author: markt >> Date: Fri Oct 24 23:27:40 2014 >> New Revision: 1634161 >> >> URL: http://svn.apache.org/r1634161 >> Log: >> Follow up to r1634089. >> Fix some additional test failures with the stricter escaping rules. >> >> Modified: >> tomcat/trunk/java/org/apache/jasper/compiler/ELParser.java >> tomcat/trunk/java/org/apache/jasper/compiler/Parser.java >> tomcat/trunk/test/org/apache/jasper/compiler/TestParser.java > > 1) The patches covered Parser.parseTemplateText(). > > There is also Parser.parseXMLTemplateText()
ACK. > 2) In Parser: > > reader.nextChar() can return -1 in case when hasMoreInput() is false. > > In that case nothing has been read and "reader.pushChar();" should not > be called. > > There exists reader.peekChar() method in JspReader, but only for one > character ahead. ACK. > 3) In Parser and JspReader that it uses: There is a caveat with > reader.hasMoreInput(): it modifies the current reader state due to > the call to popFile(). > > If popFile() call happened during the hasMoreInput() call, then > reader.pushChar() won't be possible anymore. > > Is it possible to call pushChar() after end-of-data has been reached? > - I do not see the answer from popFile() code. It needs testing. > > I looked where this pushing/popping comes from, but the only caller to > JspReader.pushFile() is JspReader constructor. I think that actually > there is always no more than a single file. In that case I'd be happy to ditch that code, the sooner the better. Anything to make Jasper less complex would be a good thing. I'll so some svn archaeology and see if I can find a time when that feature was used and what it was used for. Mark > > There exists "JspReader.setSingleFile()" setter method that turns off > multiple files mode. The setter is called in two places, but I have > not yet figured why and why 'single mode' flag is not always true. > > Coverage report: [1] > > 158 boolean hasMoreInput() throws JasperException { > 159 1930260 if (current.cursor >= current.stream.length) { > 160 8958 if (singleFile) return false; > 161 2040 while (popFile()) { > 162 0 if (current.cursor < current.stream.length) return > true; > 163 } > 164 2040 return false; > 165 } > 166 1921302 return true; > 167 } > > The popFile() line has "Conditional coverage 50%". The popFile() > method was called, but always returned false. > > [1] > http://ci.apache.org/projects/tomcat/tomcat8/coverage/org.apache.jasper.compiler.JspReader.html > > Best regards, > Konstantin Kolinko > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org