lua

A copy of the Lua development repository
Log | Files | Refs | README

commit 9cbf17b0f1bb4001b237c4027b271f0db9bde62c
parent 5382a22e0eea878339c504b2a9a3b36bcd839fcc
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Tue, 11 Sep 2018 08:38:45 -0300

Details (comments)

Diffstat:
Mlapi.c | 6+++++-
Mllimits.h | 5++++-
Mlparser.c | 4++--
3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/lapi.c b/lapi.c @@ -38,7 +38,11 @@ const char lua_ident[] = -/* test for a valid index */ +/* +** Test for a valid index. +** '!ttisnil(o)' implies 'o != &G(L)->nilvalue', so it is not needed. +** However, it covers the most common cases in a faster way. +*/ #define isvalid(L, o) (!ttisnil(o) || o != &G(L)->nilvalue) diff --git a/llimits.h b/llimits.h @@ -298,7 +298,10 @@ typedef unsigned long Instruction; ** so it is better to use 'fmod'. 'fmod' gives the result of ** 'a - trunc(a/b)*b', and therefore must be corrected when ** 'trunc(a/b) ~= floor(a/b)'. That happens when the division has a -** non-integer negative result, which is equivalent to the tests below. +** non-integer negative result: non-integer result is equivalent to +** a non-zero remainder 'm'; negative result is equivalent to 'a' and +** 'b' with different signs, or 'm' and 'b' with different signs +** (as the result 'm' of 'fmod' has the same sign of 'a'). */ #if !defined(luai_nummod) #define luai_nummod(L,a,b,m) \ diff --git a/lparser.c b/lparser.c @@ -1171,9 +1171,9 @@ static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) { suffixedexp(ls, &nv.v); if (!vkisindexed(nv.v.k)) check_conflict(ls, lh, &nv.v); - luaE_incCcalls(ls->L); /* control recursion depth */ + enterlevel(ls); /* control recursion depth */ assignment(ls, &nv, nvars+1); - ls->L->nCcalls--; + leavelevel(ls); } else { /* assignment -> '=' explist */ int nexps;