From: SourceForge.net <no...@so...> - 2006-02-19 11:53:05
|
Bugs item #1421265, was opened at 2006-02-01 08:43 Message generated for change (Settings changed) made by gregwilkins You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=107322&aid=1421265&group_id=7322 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Resolution: Fixed Priority: 5 Submitted By: Christopher Taylor (c_s_taylor) Assigned to: Nobody/Anonymous (nobody) Summary: Jetty6 TRUNK Off-by-one error in HttpConnection$OutputWriter Initial Comment: There's an off-by-one error in both the org.mortbay.jetty.HttpConnection$OutputWriter.write (String...) and OutputWriter.write (char[]...) methods. Consider a single JSP file that contains a large amount of data that must be converted all at once. The call to _converter.write(s,i0,i-i0) will not include the final character of that group because the third parameter is a length and not a final index. Assume _writeChunk = 6, i = 0, end > 6: int i0 = i++; // i0 = 0, i = 1 i += _writeChunk / 2 // i0 = 0, i = 4 // ignore i>end since end is larger than i for this example _converter.write (s,i0,i-i0); // We pass (s,0,4) _converter.flush(); // not relevant for the bug So, after this block is done, i (the index variable) is 4, _but_ as we come back to the top of the loop, we increment i to 5, which means s[4] never got written to the stream, hence we're "off-by-one". I've attached a JSP file in UTF-8 format that quickly illustrates the bug. Just have Jetty load that JSP file and note how the last row of full-width characters doesn't match up with the above rows. The fix is easy: after flush, decrement i ---------------------------------------------------------------------- Comment By: Greg Wilkins (gregwilkins) Date: 2006-02-01 10:01 Message: Logged In: YES user_id=44062 thanks- another faulty optimizatons! I've refactored this code in SVN. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=107322&aid=1421265&group_id=7322 |