summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java1
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java9
2 files changed, 10 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
index 3f73faf289d..71eaa7f8b25 100644
--- a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
+++ b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java
@@ -210,6 +210,7 @@ public class JsonDecoder {
private static byte[] unicodeStart = {'\\', 'u'};
private long dequoteUtf16() {
+ next();
long codepoint = readHexValue(4);
if (codepoint >= 0xd800) {
if (codepoint < 0xdc00) { // high
diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
index d82cb61a08c..44aa4ab2ff7 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java
@@ -198,6 +198,15 @@ public class JsonFormatTestCase {
}
@Test
+ public void testDecodeUnicodeAmp() {
+ final String json = "{\"body\":\"some text\\u0026more text\"}";
+ Slime slime = new Slime();
+ new JsonDecoder().decode(slime, Utf8.toBytesStd(json));
+ Cursor a = slime.get().field("body");
+ assertThat(a.asString(), is("some text&more text"));
+ }
+
+ @Test
public void testDecodeEncodeUtf8() {
final String json = "{\n" +
" \"rules\": \"# Use unicode equivalents in java source:\\n" +