Mercurial > hg > openjdk > aarch64-port > nashorn
changeset 1405:e5b03cc6f269
8066218: UTF-32LE mistakenly detected as UTF-16LE
Reviewed-by: lagergren, sundar
author | attila |
---|---|
date | Mon, 01 Jun 2015 15:01:36 +0200 |
parents | b4a5485d6ff3 |
children | 24cb54d0bfa2 |
files | src/jdk/nashorn/internal/runtime/Source.java |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk/nashorn/internal/runtime/Source.java Tue Jun 02 14:53:05 2015 +0530 +++ b/src/jdk/nashorn/internal/runtime/Source.java Mon Jun 01 15:01:36 2015 +0200 @@ -910,14 +910,16 @@ start = 2; cs = StandardCharsets.UTF_16BE; } else if (bytes.length > 1 && bytes[0] == (byte) 0xFF && bytes[1] == (byte) 0xFE) { - start = 2; - cs = StandardCharsets.UTF_16LE; + if (bytes.length > 3 && bytes[2] == 0 && bytes[3] == 0) { + start = 4; + cs = Charset.forName("UTF-32LE"); + } else { + start = 2; + cs = StandardCharsets.UTF_16LE; + } } else if (bytes.length > 2 && bytes[0] == (byte) 0xEF && bytes[1] == (byte) 0xBB && bytes[2] == (byte) 0xBF) { start = 3; cs = StandardCharsets.UTF_8; - } else if (bytes.length > 3 && bytes[0] == (byte) 0xFF && bytes[1] == (byte) 0xFE && bytes[2] == 0 && bytes[3] == 0) { - start = 4; - cs = Charset.forName("UTF-32LE"); } else if (bytes.length > 3 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == (byte) 0xFE && bytes[3] == (byte) 0xFF) { start = 4; cs = Charset.forName("UTF-32BE");