Hi John, I think your change is correct. The loop can also be optimized a little if we check beforehand for the completely whitespace case, so I'm checking in the patch below. I noticed you cc'd the libgcj patches list: this problem does not apply to libgcj, because it has a different (native) implementation of String. regards [ bryce ] "[EMAIL PROTECTED]" wrote: > I had problems with the String.trim() method, changing it from: [...] > Note I just added "+ 1" in the return line. > > I haven't tested this thoroughly but it made my problems go away.
2000-05-15 Bryce McKinlay <[EMAIL PROTECTED]> * java/lang/String.java (trim): Optimize `end' loop. Don't lose the last character of the returned string. =================================================================== RCS file: /cvs/classpath/java/lang/String.java,v retrieving revision 1.27 diff -u -r1.27 String.java --- String.java 2000/05/09 02:12:26 1.27 +++ String.java 2000/05/15 09:10:29 @@ -905,14 +905,18 @@ if (count == 0 || (value[0] > '\u0020' && value[count-1] > '\u0020')) return this; int begin = 0; - for (; begin < count; begin++) - if (value[begin] > '\u0020') - break; - int end = count-1; - for (; end >= 0; end--) - if (value[end] > '\u0020') - break; - return substring(begin, end); + for (;; begin++) + { + if (begin == count) + return ""; + if (value[begin] > '\u0020') + break; + } + int end = count; + for (;;) + if (value[--end] > '\u0020') + break; + return substring(begin, end + 1); } /**