Index: java/lang/Character.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/lang/Character.java,v retrieving revision 1.40 diff -u -r1.40 Character.java --- java/lang/Character.java 17 Sep 2005 21:58:41 -0000 1.40 +++ java/lang/Character.java 8 Jan 2006 08:52:41 -0000 @@ -2410,11 +2410,11 @@ { // Write second char first to cause IndexOutOfBoundsException // immediately. - dst[dstIndex + 1] = (char) ((codePoint & 0x3ff) - + (int) MIN_LOW_SURROGATE ); - dst[dstIndex] = (char) ((codePoint >> 10) + (int) MIN_HIGH_SURROGATE); + final int cp2 = codePoint - 0x10000; + dst[dstIndex + 1] = (char) ((cp2 % 0x400) + (int) MIN_LOW_SURROGATE); + dst[dstIndex] = (char) ((cp2 / 0x400) + (int) MIN_HIGH_SURROGATE); result = 2; - } + } else { dst[dstIndex] = (char) codePoint;