[kaffe] CVS kaffe (kaz): libraries/javalib/external/classpath/gnu/java/nio/charset/UTF_16Decoder.java,

Kaffe CVS cvs-commits at kaffe.org
Thu Oct 20 08:12:46 PDT 2005


PatchSet 6951 
Date: 2005/10/20 14:59:56
Author: kaz
Branch: HEAD
Tag: (none) 
Log:
2005-10-20  Ito Kazumitsu  <kaz at maczuka.gcd.org>

        * 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  <kaz at maczuka.gcd.org>
+
+	* 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  <guilhem at kaffe.org>
 
 	* 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();
   }



More information about the kaffe mailing list