Don't use tointegerns when luaV_tointegerns will do
Some places don't need the "fast path" macro tointegerns, either because speed is not essential (lcode.c) or because the value is not supposed to be an integer already (luaV_equalobj and luaG_tointerror). Moreover, luaV_equalobj should always use F2Ieq, even if Lua is compiled to "round to floor".
This commit is contained in:
9
lvm.c
9
lvm.c
@@ -568,8 +568,13 @@ int luaV_equalobj (lua_State *L, const TValue *t1, const TValue *t2) {
|
||||
if (ttype(t1) != ttype(t2) || ttype(t1) != LUA_TNUMBER)
|
||||
return 0; /* only numbers can be equal with different variants */
|
||||
else { /* two numbers with different variants */
|
||||
lua_Integer i1, i2; /* compare them as integers */
|
||||
return (tointegerns(t1, &i1) && tointegerns(t2, &i2) && i1 == i2);
|
||||
/* One of them is an integer. If the other does not have an
|
||||
integer value, they cannot be equal; otherwise, compare their
|
||||
integer values. */
|
||||
lua_Integer i1, i2;
|
||||
return (luaV_tointegerns(t1, &i1, F2Ieq) &&
|
||||
luaV_tointegerns(t2, &i2, F2Ieq) &&
|
||||
i1 == i2);
|
||||
}
|
||||
}
|
||||
/* values have same type and same variant */
|
||||
|
||||
Reference in New Issue
Block a user