11/*
2- ** $Id: lvm.c,v 2.166 2013/04/26 19:51:17 roberto Exp roberto $
2+ ** $Id: lvm.c,v 2.167 2013/04/29 17:12:50 roberto Exp roberto $
33** Lua virtual machine
44** See Copyright Notice in lua.h
55*/
@@ -327,7 +327,7 @@ lua_Integer luaV_div (lua_State *L, lua_Integer x, lua_Integer y) {
327327lua_Integer luaV_mod (lua_State * L , lua_Integer x , lua_Integer y ) {
328328 if (cast_unsigned (y ) + 1 <= 1U ) { /* special cases: -1 or 0 */
329329 if (y == 0 )
330- luaG_runerror (L , "attempt to divide by zero (in '%%') " );
330+ luaG_runerror (L , "attempt to perform 'n%%0' " );
331331 else /* -1 */
332332 return 0 ; /* avoid overflow with 0x80000... */
333333 }
@@ -346,11 +346,10 @@ lua_Integer luaV_pow (lua_Integer x, lua_Integer y) {
346346 lua_assert (y >= 0 );
347347 if (y == 0 ) return r ;
348348 for (; y > 1 ; y >>= 1 ) {
349- if (y & 1 )
350- r = cast_integer (cast_unsigned (r ) * cast_unsigned (x ));
351- x = cast_integer (cast_unsigned (x ) * cast_unsigned (x ));
349+ if (y & 1 ) r = intop (* , r , x );
350+ x = intop (* , x , x );
352351 }
353- r = cast_integer ( cast_unsigned ( r ) * cast_unsigned ( x ) );
352+ r = intop ( * , r , x );
354353 return r ;
355354}
356355
@@ -594,7 +593,7 @@ void luaV_execute (lua_State *L) {
594593 lua_Number nb ; lua_Number nc ;
595594 if (ttisinteger (rb ) && ttisinteger (rc )) {
596595 lua_Integer ib = ivalue (rb ); lua_Integer ic = ivalue (rc );
597- setivalue (ra , cast_integer ( cast_unsigned ( ib ) + cast_unsigned ( ic ) ));
596+ setivalue (ra , intop ( + , ib , ic ));
598597 }
599598 else if (tonumber (rb , & nb ) && tonumber (rc , & nc )) {
600599 setnvalue (ra , luai_numadd (L , nb , nc ));
@@ -607,7 +606,7 @@ void luaV_execute (lua_State *L) {
607606 lua_Number nb ; lua_Number nc ;
608607 if (ttisinteger (rb ) && ttisinteger (rc )) {
609608 lua_Integer ib = ivalue (rb ); lua_Integer ic = ivalue (rc );
610- setivalue (ra , cast_integer ( cast_unsigned ( ib ) - cast_unsigned ( ic ) ));
609+ setivalue (ra , intop ( - , ib , ic ));
611610 }
612611 else if (tonumber (rb , & nb ) && tonumber (rc , & nc )) {
613612 setnvalue (ra , luai_numsub (L , nb , nc ));
@@ -620,7 +619,7 @@ void luaV_execute (lua_State *L) {
620619 lua_Number nb ; lua_Number nc ;
621620 if (ttisinteger (rb ) && ttisinteger (rc )) {
622621 lua_Integer ib = ivalue (rb ); lua_Integer ic = ivalue (rc );
623- setivalue (ra , cast_integer ( cast_unsigned ( ib ) * cast_unsigned ( ic ) ));
622+ setivalue (ra , intop ( * , ib , ic ));
624623 }
625624 else if (tonumber (rb , & nb ) && tonumber (rc , & nc )) {
626625 setnvalue (ra , luai_nummul (L , nb , nc ));
0 commit comments