diff -Nru jcodings-1.0.57/debian/changelog jcodings-1.0.58/debian/changelog --- jcodings-1.0.57/debian/changelog 2022-05-29 08:21:25.000000000 +0000 +++ jcodings-1.0.58/debian/changelog 2022-11-13 07:25:54.000000000 +0000 @@ -1,3 +1,9 @@ +jcodings (1.0.58-1) unstable; urgency=medium + + * New upstream release + + -- Hideki Yamane Sun, 13 Nov 2022 16:25:54 +0900 + jcodings (1.0.57-2) unstable; urgency=medium * debian/control diff -Nru jcodings-1.0.57/pom.xml jcodings-1.0.58/pom.xml --- jcodings-1.0.57/pom.xml 2022-03-29 20:25:06.000000000 +0000 +++ jcodings-1.0.58/pom.xml 2022-11-10 19:52:47.000000000 +0000 @@ -3,7 +3,7 @@ 4.0.0 org.jruby.jcodings jcodings - 1.0.57 + 1.0.58 JCodings Byte based encoding support library for java diff -Nru jcodings-1.0.57/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java jcodings-1.0.58/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java --- jcodings-1.0.57/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java 2022-03-29 20:25:06.000000000 +0000 +++ jcodings-1.0.58/src/org/jcodings/transcode/specific/To_CESU_8_Transcoder.java 2022-11-10 19:52:47.000000000 +0000 @@ -31,17 +31,6 @@ public static final Transcoder INSTANCE = new To_CESU_8_Transcoder(); @Override - public boolean hasStateInit() { - return true; - } - - @Override - public int stateInit(byte[] statep) { - statep[0] = 0; - return 0; - } - - @Override public int startToOutput(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int oSize) { return TranscodeFunctions.funSoToCESU8(statep, s, sStart, l, o, oStart, oSize); } diff -Nru jcodings-1.0.57/src/org/jcodings/transcode/TranscodeFunctions.java jcodings-1.0.58/src/org/jcodings/transcode/TranscodeFunctions.java --- jcodings-1.0.57/src/org/jcodings/transcode/TranscodeFunctions.java 2022-03-29 20:25:06.000000000 +0000 +++ jcodings-1.0.58/src/org/jcodings/transcode/TranscodeFunctions.java 2022-11-10 19:52:47.000000000 +0000 @@ -15,23 +15,23 @@ public static final int LE = 2; public static int funSoToCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = ((s[0] & 0x07) << 18) | ((s[1] & 0x3F) << 12) | ((s[2] & 0x3F) << 6) | (s[3] & 0x3F); + long scalar = ((toUnsignedInt(s[sStart+0]) & 0x07) << 18) | ((toUnsignedInt(s[sStart+1]) & 0x3F) << 12) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 6) | (toUnsignedInt(s[sStart+3]) & 0x3F); scalar -= 0x10000; - o[0] = (byte)0xED; - o[1] = (byte)(0xA0 | (scalar >> 16)); - o[2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); - o[3] = (byte)0xED; - o[4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); - o[5] = (byte)(0x80 | (scalar & 0x3F)); + o[oStart+0] = (byte)0xED; + o[oStart+1] = (byte)(0xA0 | (scalar >> 16)); + o[oStart+2] = (byte)(0x80 | ((scalar >> 10) & 0x3F)); + o[oStart+3] = (byte)0xED; + o[oStart+4] = (byte)(0xB0 | ((scalar >> 6) & 0x0F)); + o[oStart+5] = (byte)(0x80 | (scalar & 0x3F)); return 6; } public static int funSoFromCESU8(byte[] statep, byte[] s, int sStart, int l, byte[] o, int oStart, int osize) { - long scalar = (((s[1] & 0x0F) << 16) | ((s[2] & 0x3F) << 10) | ((s[4] & 0x0F) << 6) | (s[5] & 0x3F)) + 0x10000; - o[0] = (byte)(0xF0 | (scalar >> 18)); - o[1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); - o[2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); - o[3] = (byte)(0x80 | (scalar & 0x3F)); + long scalar = (((toUnsignedInt(s[sStart+1]) & 0x0F) << 16) | ((toUnsignedInt(s[sStart+2]) & 0x3F) << 10) | ((toUnsignedInt(s[sStart+4]) & 0x0F) << 6) | (toUnsignedInt(s[sStart+5]) & 0x3F)) + 0x10000; + o[oStart+0] = (byte)(0xF0 | (scalar >> 18)); + o[oStart+1] = (byte)(0x80 | ((scalar >> 12) & 0x3F)); + o[oStart+2] = (byte)(0x80 | ((scalar >> 6) & 0x3F)); + o[oStart+3] = (byte)(0x80 | (scalar & 0x3F)); return 4; } diff -Nru jcodings-1.0.57/src/org/jcodings/util/Macros.java jcodings-1.0.58/src/org/jcodings/util/Macros.java --- jcodings-1.0.57/src/org/jcodings/util/Macros.java 2022-03-29 20:25:06.000000000 +0000 +++ jcodings-1.0.58/src/org/jcodings/util/Macros.java 2022-11-10 19:52:47.000000000 +0000 @@ -48,7 +48,7 @@ // UNICODE_VALID_CODEPOINT_P public static boolean UNICODE_VALID_CODEPOINT_P(int c) { - return ((c) <= 0x10ffff) && + return (Integer.compareUnsigned(c, 0x10ffff) <= 0) && !((c) < 0x10000 && UTF16_IS_SURROGATE((c) >> 8)); }