diff options
Diffstat (limited to 'ltable.c')
-rw-r--r-- | ltable.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -48,8 +48,8 @@ /* ** MAXASIZE is the maximum size of the array part. It is the minimum -** between 2^MAXABITS and the maximum size such that, measured in bytes, -** it fits in a 'size_t'. +** between 2^MAXABITS and the maximum size that, measured in bytes, +** fits in a 'size_t'. */ #define MAXASIZE luaM_limitN(1u << MAXABITS, TValue) @@ -269,7 +269,7 @@ static const TValue *getgeneric (Table *t, const TValue *key) { ** the array part of a table, 0 otherwise. */ static unsigned int arrayindex (lua_Integer k) { - if (0 < k && l_castS2U(k) <= MAXASIZE) + if (l_castS2U(k) - 1u < MAXASIZE) /* 'k' in [1, MAXASIZE]? */ return cast_uint(k); /* 'key' is an appropriate array index */ else return 0; @@ -286,7 +286,7 @@ static unsigned int findindex (lua_State *L, Table *t, TValue *key, unsigned int i; if (ttisnil(key)) return 0; /* first iteration */ i = ttisinteger(key) ? arrayindex(ivalue(key)) : 0; - if (i != 0 && i <= asize) /* is 'key' inside array part? */ + if (i - 1u < asize) /* is 'key' inside array part? */ return i; /* yes; that's the index */ else { const TValue *n = getgeneric(t, key); @@ -678,7 +678,7 @@ TValue *luaH_newkey (lua_State *L, Table *t, const TValue *key) { ** changing the real size of the array). */ const TValue *luaH_getint (Table *t, lua_Integer key) { - if (l_castS2U(key) - 1u < t->alimit) /* (1 <= key && key <= t->alimit)? */ + if (l_castS2U(key) - 1u < t->alimit) /* 'key' in [1, t->alimit]? */ return &t->array[key - 1]; else if (!limitequalsasize(t) && /* key still may be in the array part? */ (l_castS2U(key) == t->alimit + 1 || |