mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 03:53:09 +00:00
update lua 5.5.1
This commit is contained in:
@@ -56,6 +56,8 @@ static const char *utf8_decode (const char *s, l_uint32 *val, int strict) {
|
||||
l_uint32 res = 0; /* final result */
|
||||
if (c < 0x80) /* ASCII? */
|
||||
res = c;
|
||||
else if (c >= 0xfe) /* c >= 1111 1110b ? */
|
||||
return NULL; /* would need six or more continuation bytes */
|
||||
else {
|
||||
int count = 0; /* to count number of continuation bytes */
|
||||
for (; c & 0x40; c <<= 1) { /* while it needs continuation bytes... */
|
||||
@@ -64,8 +66,9 @@ static const char *utf8_decode (const char *s, l_uint32 *val, int strict) {
|
||||
return NULL; /* invalid byte sequence */
|
||||
res = (res << 6) | (cc & 0x3F); /* add lower 6 bits from cont. byte */
|
||||
}
|
||||
lua_assert(count <= 5);
|
||||
res |= ((l_uint32)(c & 0x7F) << (count * 5)); /* add first byte */
|
||||
if (count > 5 || res > MAXUTF || res < limits[count])
|
||||
if (res > MAXUTF || res < limits[count])
|
||||
return NULL; /* invalid byte sequence */
|
||||
s += count; /* skip continuation bytes read */
|
||||
}
|
||||
@@ -146,7 +149,7 @@ static int codepoint (lua_State *L) {
|
||||
static void pushutfchar (lua_State *L, int arg) {
|
||||
lua_Unsigned code = (lua_Unsigned)luaL_checkinteger(L, arg);
|
||||
luaL_argcheck(L, code <= MAXUTF, arg, "value out of range");
|
||||
lua_pushfstring(L, "%U", (long)code);
|
||||
lua_pushfstring(L, "%U", cast(unsigned long, code));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user