mirror of https://github.com/lua/lua
Fixed bug in OP_IDIVI
Opocode was using 'luai_numdiv' (float division) instead of 'luai_numidiv' (integer division).
This commit is contained in:
parent
7c519dfbd0
commit
06e08c6d05
4
lvm.c
4
lvm.c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
** $Id: lvm.c,v 2.358 2018/06/15 14:14:20 roberto Exp roberto $
|
||||
** $Id: lvm.c,v 2.359 2018/06/18 17:58:21 roberto Exp roberto $
|
||||
** Lua virtual machine
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
|
@ -1182,7 +1182,7 @@ void luaV_execute (lua_State *L, CallInfo *ci) {
|
|||
}
|
||||
else if (tonumberns(rb, nb)) {
|
||||
lua_Number nc = cast_num(ic);
|
||||
setfltvalue(s2v(ra), luai_numdiv(L, nb, nc));
|
||||
setfltvalue(s2v(ra), luai_numidiv(L, nb, nc));
|
||||
}
|
||||
else
|
||||
Protect(luaT_trybiniTM(L, rb, ic, 0, ra, TM_IDIV));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
-- $Id: math.lua,v 1.86 2018/05/09 14:55:52 roberto Exp $
|
||||
-- $Id: math.lua,v 1.86 2018/05/09 14:55:52 roberto Exp roberto $
|
||||
-- See Copyright Notice in file all.lua
|
||||
|
||||
print("testing numbers and math lib")
|
||||
|
@ -139,6 +139,17 @@ assert(-1 // 0.0 == -1/0)
|
|||
assert(eqT(3.5 // 1.5, 2.0))
|
||||
assert(eqT(3.5 // -1.5, -3.0))
|
||||
|
||||
do -- tests for different kinds of opcodes
|
||||
local x, y
|
||||
x = 1; assert(x // 0.0 == 1/0)
|
||||
x = 1.0; assert(x // 0 == 1/0)
|
||||
x = 3.5; assert(eqT(x // 1, 3.0))
|
||||
assert(eqT(x // -1, -4.0))
|
||||
|
||||
x = 3.5; y = 1.5; assert(eqT(x // y, 2.0))
|
||||
x = 3.5; y = -1.5; assert(eqT(x // y, -3.0))
|
||||
end
|
||||
|
||||
assert(maxint // maxint == 1)
|
||||
assert(maxint // 1 == maxint)
|
||||
assert((maxint - 1) // maxint == 0)
|
||||
|
|
Loading…
Reference in New Issue