From 7ceb2154ed69170f3e47f7a5a840e543c7c6ed3d Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 25 Mar 2019 10:38:56 -0300 Subject: Fixed small bugs/issues - In 'readutf8esc' (llex.c), the overflow check must be done before shifting the accumulator. It was working because tests were using 64-bit longs. Failed with 32-bit longs. - In OP_FORPREP (lvm.c), avoid negating an unsigned value. Visual Studio gives a warning for that operation, despite being well defined in ISO C. - In 'luaV_execute' (lvm.c), 'cond' can be defined only when needed, like all other variables. --- llex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llex.c') diff --git a/llex.c b/llex.c index 1539f525..b0bab377 100644 --- a/llex.c +++ b/llex.c @@ -334,8 +334,8 @@ static unsigned long readutf8esc (LexState *ls) { r = gethexa(ls); /* must have at least one digit */ while ((save_and_next(ls), lisxdigit(ls->current))) { i++; + esccheck(ls, r <= (0x7FFFFFFFu >> 4), "UTF-8 value too large"); r = (r << 4) + luaO_hexavalue(ls->current); - esccheck(ls, r <= 0x7FFFFFFFu, "UTF-8 value too large"); } esccheck(ls, ls->current == '}', "missing '}'"); next(ls); /* skip '}' */ -- cgit v1.2.3-55-g6feb