PatchSet 6951 Date: 2005/10/20 14:59:56 Author: kaz Branch: HEAD Tag: (none) Log: 2005-10-20 Ito Kazumitsu <[EMAIL PROTECTED]>
* libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java, libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java, libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java: Proposed patch for GCC Bugzilla Bug 23008 and 22968. Members: ChangeLog:1.4475->1.4476 libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java:1.1->1.2 libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java:1.1->1.2 libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java:1.1->1.2 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.4475 kaffe/ChangeLog:1.4476 --- kaffe/ChangeLog:1.4475 Wed Oct 19 20:48:10 2005 +++ kaffe/ChangeLog Thu Oct 20 14:59:56 2005 @@ -1,3 +1,10 @@ +2005-10-20 Ito Kazumitsu <[EMAIL PROTECTED]> + + * libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java, + libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java, + libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java: + Proposed patch for GCC Bugzilla Bug 23008 and 22968. + 2005-10-19 Guilhem Lavaux <[EMAIL PROTECTED]> * developers/update-vm-list: New script adapted from update-class-list Index: kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java diff -u kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java:1.1 kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java:1.2 --- kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java:1.1 Wed Oct 19 20:36:31 2005 +++ kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java Thu Oct 20 15:00:03 2005 @@ -54,6 +54,8 @@ static final int BIG_ENDIAN = 0; static final int LITTLE_ENDIAN = 1; static final int UNKNOWN_ENDIAN = 2; + static final int MAYBE_BIG_ENDIAN = 3; + static final int MAYBE_LITTLE_ENDIAN = 4; private static final char BYTE_ORDER_MARK = 0xFEFF; private static final char REVERSED_BYTE_ORDER_MARK = 0xFFFE; @@ -81,26 +83,37 @@ byte b2 = in.get (); // handle byte order mark - if (byteOrder == UNKNOWN_ENDIAN) + if (byteOrder == UNKNOWN_ENDIAN || + byteOrder == MAYBE_BIG_ENDIAN || + byteOrder == MAYBE_LITTLE_ENDIAN) { char c = (char) (((b1 & 0xFF) << 8) | (b2 & 0xFF)); if (c == BYTE_ORDER_MARK) { + if (byteOrder == MAYBE_LITTLE_ENDIAN) + { + return CoderResult.malformedForLength (2); + } byteOrder = BIG_ENDIAN; inPos += 2; continue; } else if (c == REVERSED_BYTE_ORDER_MARK) { + if (byteOrder == MAYBE_BIG_ENDIAN) + { + return CoderResult.malformedForLength (2); + } byteOrder = LITTLE_ENDIAN; inPos += 2; continue; } else { - // assume big endian, do not consume bytes, + // assume big or little endian, do not consume bytes, // continue with normal processing - byteOrder = BIG_ENDIAN; + byteOrder = (byteOrder == MAYBE_LITTLE_ENDIAN ? + LITTLE_ENDIAN : BIG_ENDIAN); } } Index: kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java diff -u kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java:1.1 kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java:1.2 --- kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java:1.1 Wed Oct 19 20:36:31 2005 +++ kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/UnicodeLittle.java Thu Oct 20 15:00:03 2005 @@ -64,7 +64,7 @@ public CharsetDecoder newDecoder () { - return new UTF_16Decoder (this, UTF_16Decoder.UNKNOWN_ENDIAN); + return new UTF_16Decoder (this, UTF_16Decoder.MAYBE_LITTLE_ENDIAN); } public CharsetEncoder newEncoder () Index: kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java diff -u kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java:1.1 kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java:1.2 --- kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java:1.1 Wed Oct 19 20:36:32 2005 +++ kaffe/libraries/javalib/external/classpath/gnu/java/nio/charset/iconv/IconvProvider.java Thu Oct 20 15:00:04 2005 @@ -62,7 +62,11 @@ } } - private IconvProvider() + // Declaring the construtor public may violate the use of singleton. + // But it must be public so that an instance of this class can be + // created by Class.newInstance(), which is the case when this provider is + // defined in META-INF/services/java.nio.charset.spi.CharsetProvider. + public IconvProvider() { IconvMetaData.setup(); } _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe