This fixes a bug introduced by Ian's recent optimisation
in java.lang.String. x has a different meaning in toLowerCase
to in toUpperCase, and the current use of count - x - offset
results in characters being dropped from the output string.
ChangeLog:
2008-05-06 Andrew John Hughes <[EMAIL PROTECTED]>
PR classpath/35482
* java/lang/String.java:
(toLowerCase()): Fix calculation of number
of characters to copy.
(toLowerCaseTurkish()): Likewise.
--
Andrew :)
Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8
Index: java/lang/String.java
===================================================================
RCS file: /sources/classpath/classpath/java/lang/String.java,v
retrieving revision 1.89
diff -u -r1.89 String.java
--- java/lang/String.java 16 Mar 2008 22:04:50 -0000 1.89
+++ java/lang/String.java 6 May 2008 02:17:58 -0000
@@ -1452,7 +1452,7 @@
// Now we perform the conversion. Fortunately, there are no multi-character
// lowercase expansions in Unicode 3.0.0.
char[] newStr = new char[count];
- VMSystem.arraycopy(value, offset, newStr, 0, count - (x - offset));
+ VMSystem.arraycopy(value, offset, newStr, 0, x - offset);
do
{
char ch = value[x];
@@ -1508,7 +1508,7 @@
// Now we perform the conversion. Fortunately, there are no
// multi-character lowercase expansions in Unicode 3.0.0.
char[] newStr = new char[count];
- VMSystem.arraycopy(value, offset, newStr, 0, count - (x - offset));
+ VMSystem.arraycopy(value, offset, newStr, 0, x - offset);
do
{
char ch = value[x];