diff --git a/src/icu.utf8.c b/src/icu.utf8.c index 40a2ebd..8f64ce9 100644 --- a/src/icu.utf8.c +++ b/src/icu.utf8.c @@ -365,10 +365,7 @@ static int icu_utf8_char(lua_State *L) { luaL_addchar(&buf, (char)(0x80 | ((codePoint >> 6) & 0x3F))); luaL_addchar(&buf, (char)(0x80 | (codePoint & 0x3F))); } - else if (codePoint > 0x110000) { - return luaL_argerror(L,i+1,"invalid codepoint"); - } - else { + else if (codePoint < 0x110000) { // 00000000 000zzzzz yyyyyyyy xxxxxxxx // 11110zzz 10zzyyyy 10yyyyxx 10xxxxxx luaL_addchar(&buf, (char)(0xF0 | (codePoint >> 18))); @@ -376,6 +373,9 @@ static int icu_utf8_char(lua_State *L) { luaL_addchar(&buf, (char)(0x80 | ((codePoint >> 6) & 0x3F))); luaL_addchar(&buf, (char)(0x80 | (codePoint & 0x3F))); } + else { + return luaL_argerror(L,i+1,"invalid codepoint"); + } } luaL_pushresult(&buf); return 1;