Details (comments)
diff --git a/lapi.c b/lapi.c
index 0ca9a32..ae6b07a 100644
--- a/lapi.c
+++ b/lapi.c
@@ -38,7 +38,11 @@
 
 
 
-/* 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
index e91310a..8ab58b5 100644
--- a/llimits.h
+++ b/llimits.h
@@ -298,7 +298,10 @@
 ** 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
index 9f156dd..32500b0 100644
--- a/lparser.c
+++ b/lparser.c
@@ -1171,9 +1171,9 @@
     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;