|
@@ -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 */
|