-
Bug
-
Resolution: Fixed
-
P4
-
5.0
-
b78
-
x86
-
linux
FULL PRODUCT VERSION :
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Linux honolulu.ilog.fr 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686 unknown
A DESCRIPTION OF THE PROBLEM :
The encoder for Cp949 returns empty byte buffers or byte buffers containing
only a single null byte instead of throwing UnmappableCharacterException.
Likewise for Cp949C.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
javac niobug6.java
java niobug6
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No output.
ACTUAL -
Charset Cp949: 54275 errors
Charset Cp949C: 54275 errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.io.*;
import java.nio.*;
import java.nio.charset.*;
public class niobug6 {
public static void main (String[] args) throws CharacterCodingException {
String[] charsets = { "Cp949", "Cp949C" };
for (int n = 0; n < charsets.length; n++) {
String charset = charsets[n];
CharsetEncoder converter = Charset.forName(charset).newEncoder();
converter = converter.onMalformedInput(CodingErrorAction.REPORT);
converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
int errors = 0;
for (int i = 1; i < 0x110000; i++) {
char[] in =
(i < 0x10000
? new char[] { (char)i }
: new char[] { (char)(0xd800 + ((i - 0x10000) >> 10)),
(char)(0xdc00 + ((i - 0x10000) & 0x3ff)) });
try {
ByteBuffer out = converter.encode(CharBuffer.wrap(in));
if (out.remaining() == 0
|| (out.remaining() == 1 && out.get(0) == 0x00))
errors++;
} catch (CharacterCodingException e) {
}
}
if (errors > 0)
System.err.println("Charset "+charset+": "+errors+" errors");
}
}
}
---------- END SOURCE ----------
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Linux honolulu.ilog.fr 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686 unknown
A DESCRIPTION OF THE PROBLEM :
The encoder for Cp949 returns empty byte buffers or byte buffers containing
only a single null byte instead of throwing UnmappableCharacterException.
Likewise for Cp949C.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
javac niobug6.java
java niobug6
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No output.
ACTUAL -
Charset Cp949: 54275 errors
Charset Cp949C: 54275 errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.io.*;
import java.nio.*;
import java.nio.charset.*;
public class niobug6 {
public static void main (String[] args) throws CharacterCodingException {
String[] charsets = { "Cp949", "Cp949C" };
for (int n = 0; n < charsets.length; n++) {
String charset = charsets[n];
CharsetEncoder converter = Charset.forName(charset).newEncoder();
converter = converter.onMalformedInput(CodingErrorAction.REPORT);
converter = converter.onUnmappableCharacter(CodingErrorAction.REPORT);
int errors = 0;
for (int i = 1; i < 0x110000; i++) {
char[] in =
(i < 0x10000
? new char[] { (char)i }
: new char[] { (char)(0xd800 + ((i - 0x10000) >> 10)),
(char)(0xdc00 + ((i - 0x10000) & 0x3ff)) });
try {
ByteBuffer out = converter.encode(CharBuffer.wrap(in));
if (out.remaining() == 0
|| (out.remaining() == 1 && out.get(0) == 0x00))
errors++;
} catch (CharacterCodingException e) {
}
}
if (errors > 0)
System.err.println("Charset "+charset+": "+errors+" errors");
}
}
}
---------- END SOURCE ----------