mirror of
https://github.com/bellard/quickjs.git
synced 2025-09-30 23:07:42 +03:00
2020-09-06 release
This commit is contained in:
20
libregexp.c
20
libregexp.c
@@ -569,7 +569,8 @@ int lre_parse_escape(const uint8_t **pp, int allow_utf16)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '0' ... '7':
|
||||
case '0': case '1': case '2': case '3':
|
||||
case '4': case '5': case '6': case '7':
|
||||
c -= '0';
|
||||
if (allow_utf16 == 2) {
|
||||
/* only accept \0 not followed by digit */
|
||||
@@ -1410,7 +1411,9 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir)
|
||||
}
|
||||
}
|
||||
goto normal_char;
|
||||
case '1' ... '9':
|
||||
case '1': case '2': case '3': case '4':
|
||||
case '5': case '6': case '7': case '8':
|
||||
case '9':
|
||||
{
|
||||
const uint8_t *q = ++p;
|
||||
|
||||
@@ -1434,7 +1437,7 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir)
|
||||
}
|
||||
goto normal_char;
|
||||
}
|
||||
return re_parse_error(s, "back reference out of range in reguar expression");
|
||||
return re_parse_error(s, "back reference out of range in regular expression");
|
||||
}
|
||||
emit_back_reference:
|
||||
last_atom_start = s->byte_code.size;
|
||||
@@ -2533,6 +2536,17 @@ int lre_get_flags(const uint8_t *bc_buf)
|
||||
return bc_buf[RE_HEADER_FLAGS];
|
||||
}
|
||||
|
||||
/* Return NULL if no group names. Otherwise, return a pointer to
|
||||
'capture_count - 1' zero terminated UTF-8 strings. */
|
||||
const char *lre_get_groupnames(const uint8_t *bc_buf)
|
||||
{
|
||||
uint32_t re_bytecode_len;
|
||||
if ((lre_get_flags(bc_buf) & LRE_FLAG_NAMED_GROUPS) == 0)
|
||||
return NULL;
|
||||
re_bytecode_len = get_u32(bc_buf + 3);
|
||||
return (const char *)(bc_buf + 7 + re_bytecode_len);
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
BOOL lre_check_stack_overflow(void *opaque, size_t alloca_size)
|
||||
|
Reference in New Issue
Block a user