aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lvm.c2
-rw-r--r--testes/bitwise.lua5
2 files changed, 6 insertions, 1 deletions
diff --git a/lvm.c b/lvm.c
index ec83f415..c84a665f 100644
--- a/lvm.c
+++ b/lvm.c
@@ -766,7 +766,7 @@ lua_Number luaV_modf (lua_State *L, lua_Number m, lua_Number n) {
766/* 766/*
767** Shift left operation. (Shift right just negates 'y'.) 767** Shift left operation. (Shift right just negates 'y'.)
768*/ 768*/
769#define luaV_shiftr(x,y) luaV_shiftl(x,-(y)) 769#define luaV_shiftr(x,y) luaV_shiftl(x,intop(-, 0, y))
770 770
771lua_Integer luaV_shiftl (lua_Integer x, lua_Integer y) { 771lua_Integer luaV_shiftl (lua_Integer x, lua_Integer y) {
772 if (y < 0) { /* shift right? */ 772 if (y < 0) { /* shift right? */
diff --git a/testes/bitwise.lua b/testes/bitwise.lua
index 59781f5d..9509f7f0 100644
--- a/testes/bitwise.lua
+++ b/testes/bitwise.lua
@@ -45,6 +45,11 @@ assert(-1 >> numbits == 0 and
45 -1 << numbits == 0 and 45 -1 << numbits == 0 and
46 -1 << -numbits == 0) 46 -1 << -numbits == 0)
47 47
48assert(1 >> math.mininteger == 0)
49assert(1 >> math.maxinteger == 0)
50assert(1 << math.mininteger == 0)
51assert(1 << math.maxinteger == 0)
52
48assert((2^30 - 1) << 2^30 == 0) 53assert((2^30 - 1) << 2^30 == 0)
49assert((2^30 - 1) >> 2^30 == 0) 54assert((2^30 - 1) >> 2^30 == 0)
50 55