summaryrefslogtreecommitdiffstats
path: root/lua/lbitlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lbitlib.c')
-rw-r--r--lua/lbitlib.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lua/lbitlib.c b/lua/lbitlib.c
index 7533b85..31c7b66 100644
--- a/lua/lbitlib.c
+++ b/lua/lbitlib.c
@@ -1,5 +1,5 @@
/*
-** $Id: lbitlib.c,v 1.16 2011/06/20 16:35:23 roberto Exp $
+** $Id: lbitlib.c,v 1.18.1.2 2013/07/09 18:01:41 roberto Exp $
** Standard library for bitwise operations
** See Copyright Notice in lua.h
*/
@@ -129,7 +129,8 @@ static int b_rot (lua_State *L, int i) {
b_uint r = luaL_checkunsigned(L, 1);
i &= (LUA_NBITS - 1); /* i = i % NBITS */
r = trim(r);
- r = (r << i) | (r >> (LUA_NBITS - i));
+ if (i != 0) /* avoid undefined shift of LUA_NBITS when i == 0 */
+ r = (r << i) | (r >> (LUA_NBITS - i));
lua_pushunsigned(L, trim(r));
return 1;
}
@@ -147,7 +148,9 @@ static int b_rrot (lua_State *L) {
/*
** get field and width arguments for field-manipulation functions,
-** checking whether they are valid
+** checking whether they are valid.
+** ('luaL_error' called without 'return' to avoid later warnings about
+** 'width' being used uninitialized.)
*/
static int fieldargs (lua_State *L, int farg, int *width) {
int f = luaL_checkint(L, farg);