diff --git a/c_src/utf8.c b/c_src/utf8.c index cd0c717..878a4f0 100644 --- a/c_src/utf8.c +++ b/c_src/utf8.c @@ -207,7 +207,7 @@ unicode_to_utf8(int c, unsigned char* buf) } else { return -1; } - } else if(c < 0x10FFFF) { + } else if(c <= 0x10FFFF) { buf[0] = (unsigned char) 0xF0 + (c >> 18); buf[1] = (unsigned char) 0x80 + ((c >> 12) & 0x3F); buf[2] = (unsigned char) 0x80 + ((c >> 6) & 0x3F); diff --git a/test/jiffy_04_string_tests.erl b/test/jiffy_04_string_tests.erl index 7cf645d..8c78a1f 100644 --- a/test/jiffy_04_string_tests.erl +++ b/test/jiffy_04_string_tests.erl @@ -108,6 +108,10 @@ cases(uescaped) -> { <<"\"\\uD83D\\uDE0A\"">>, <<240, 159, 152, 138>> + }, + { + <<"\"\\uDBFF\\uDFFF\"">>, + <<244, 143, 191, 191>> } ];