summaryrefslogtreecommitdiff
path: root/gnu/java/nio/charset/UTF_16Decoder.java
diff options
context:
space:
mode:
authorSven de Marothy <sven@physto.se>2005-04-08 21:46:05 +0000
committerSven de Marothy <sven@physto.se>2005-04-08 21:46:05 +0000
commitd619022a1d1b94506f2774b82daea02dde462e44 (patch)
tree6628305b0ea627dc0a037df9c7e18e91d83ed62f /gnu/java/nio/charset/UTF_16Decoder.java
parent9d37c49002f196b5aeb3a237903b1f0a23d77d1c (diff)
downloadclasspath-d619022a1d1b94506f2774b82daea02dde462e44.tar.gz
2005-04-08 Sven de Marothy <sven@physto.se>
* gnu/java/nio/charset/Provider.java: Add new charsets. * gnu/java/nio/charset/UTF_16.java: Default to using BOM. * gnu/java/nio/charset/UTF_16Decoder.java: Minor fixes. * gnu/java/nio/charset/UTF_16Encoder.java, Use NIO's built-in byte-ordering instead. * gnu/java/nio/charset/UTF_8.java, (Decoder): Correct values of maximum chars per byte. (decodeLoop): Handle 4-byte surrogates. * gnu/java/nio/charset/ByteCharset.java * gnu/java/nio/charset/Cp424.java * gnu/java/nio/charset/Cp437.java * gnu/java/nio/charset/Cp737.java * gnu/java/nio/charset/Cp775.java * gnu/java/nio/charset/Cp850.java * gnu/java/nio/charset/Cp852.java * gnu/java/nio/charset/Cp855.java * gnu/java/nio/charset/Cp857.java * gnu/java/nio/charset/Cp860.java * gnu/java/nio/charset/Cp861.java * gnu/java/nio/charset/Cp862.java * gnu/java/nio/charset/Cp863.java * gnu/java/nio/charset/Cp864.java * gnu/java/nio/charset/Cp865.java * gnu/java/nio/charset/Cp866.java * gnu/java/nio/charset/Cp869.java * gnu/java/nio/charset/Cp874.java * gnu/java/nio/charset/EncodingHelper.java * gnu/java/nio/charset/ISO_8859_13.java * gnu/java/nio/charset/ISO_8859_15.java * gnu/java/nio/charset/ISO_8859_2.java * gnu/java/nio/charset/ISO_8859_3.java * gnu/java/nio/charset/ISO_8859_4.java * gnu/java/nio/charset/ISO_8859_5.java * gnu/java/nio/charset/ISO_8859_6.java * gnu/java/nio/charset/ISO_8859_7.java * gnu/java/nio/charset/ISO_8859_8.java * gnu/java/nio/charset/ISO_8859_9.java * gnu/java/nio/charset/KOI_8.java * gnu/java/nio/charset/MS874.java * gnu/java/nio/charset/MacCentralEurope.java * gnu/java/nio/charset/MacCroatian.java * gnu/java/nio/charset/MacCyrillic.java * gnu/java/nio/charset/MacDingbat.java * gnu/java/nio/charset/MacGreek.java * gnu/java/nio/charset/MacIceland.java * gnu/java/nio/charset/MacRoman.java * gnu/java/nio/charset/MacRomania.java * gnu/java/nio/charset/MacSymbol.java * gnu/java/nio/charset/MacThai.java * gnu/java/nio/charset/MacTurkish.java * gnu/java/nio/charset/Windows1250.java * gnu/java/nio/charset/Windows1251.java * gnu/java/nio/charset/Windows1252.java * gnu/java/nio/charset/Windows1253.java * gnu/java/nio/charset/Windows1254.java * gnu/java/nio/charset/Windows1255.java * gnu/java/nio/charset/Windows1256.java * gnu/java/nio/charset/Windows1257.java * gnu/java/nio/charset/Windows1258.java New files.
Diffstat (limited to 'gnu/java/nio/charset/UTF_16Decoder.java')
-rw-r--r--gnu/java/nio/charset/UTF_16Decoder.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/gnu/java/nio/charset/UTF_16Decoder.java b/gnu/java/nio/charset/UTF_16Decoder.java
index 6ff9c2893..c5644fe44 100644
--- a/gnu/java/nio/charset/UTF_16Decoder.java
+++ b/gnu/java/nio/charset/UTF_16Decoder.java
@@ -55,8 +55,8 @@ final class UTF_16Decoder extends CharsetDecoder
static final int LITTLE_ENDIAN = 1;
static final int UNKNOWN_ENDIAN = 2;
- private static final char BYTE_ORDER_MARK = '\uFEFF';
- private static final char REVERSED_BYTE_ORDER_MARK = '\uFFFE';
+ private static final char BYTE_ORDER_MARK = 0xFEFF;
+ private static final char REVERSED_BYTE_ORDER_MARK = 0xFFFE;
private final int originalByteOrder;
private int byteOrder;
@@ -83,7 +83,7 @@ final class UTF_16Decoder extends CharsetDecoder
// handle byte order mark
if (byteOrder == UNKNOWN_ENDIAN)
{
- char c = (char) ((b1 << 8) | b2);
+ char c = (char) (((b1 & 0xFF) << 8) | (b2 & 0xFF));
if (c == BYTE_ORDER_MARK)
{
byteOrder = BIG_ENDIAN;
@@ -104,6 +104,7 @@ final class UTF_16Decoder extends CharsetDecoder
}
}
+ // FIXME: Change so you only do a single comparison here.
char c = byteOrder == BIG_ENDIAN ? (char) ((b1 << 8) | b2)
: (char) ((b2 << 8) | b1);