mirror of
https://github.com/lua/lua.git
synced 2025-01-28 06:03:00 +08:00
^ operator is defined by global `__pow'
This commit is contained in:
parent
034de1fe73
commit
4039bf457d
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lmathlib.c,v 1.54 2002/12/20 10:26:33 roberto Exp roberto $
|
||||
** $Id: lmathlib.c,v 1.55 2003/03/11 12:24:34 roberto Exp roberto $
|
||||
** Standard mathematical library
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -240,7 +240,7 @@ LUALIB_API int luaopen_math (lua_State *L) {
|
||||
lua_settable(L, -3);
|
||||
lua_pushliteral(L, "__pow");
|
||||
lua_pushcfunction(L, math_pow);
|
||||
lua_settable(L, LUA_REGISTRYINDEX);
|
||||
lua_settable(L, LUA_GLOBALSINDEX);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
7
lvm.c
7
lvm.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lvm.c,v 1.280 2003/03/06 19:37:42 roberto Exp roberto $
|
||||
** $Id: lvm.c,v 1.281 2003/03/07 13:21:31 roberto Exp roberto $
|
||||
** Lua virtual machine
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -357,11 +357,10 @@ static void Arith (lua_State *L, StkId ra,
|
||||
case TM_MUL: setnvalue(ra, nvalue(b) * nvalue(c)); break;
|
||||
case TM_DIV: setnvalue(ra, nvalue(b) / nvalue(c)); break;
|
||||
case TM_POW: {
|
||||
const TObject *f = luaH_getstr(hvalue(registry(L)),
|
||||
G(L)->tmname[TM_POW]);
|
||||
const TObject *f = luaH_getstr(hvalue(gt(L)), G(L)->tmname[TM_POW]);
|
||||
ptrdiff_t res = savestack(L, ra);
|
||||
if (!ttisfunction(f))
|
||||
luaG_runerror(L, "`pow' (for `^' operator) is not a function");
|
||||
luaG_runerror(L, "`__pow' (`^' operator) is not a function");
|
||||
callTMres(L, f, b, c);
|
||||
ra = restorestack(L, res); /* previous call may change stack */
|
||||
setobjs2s(ra, L->top);
|
||||
|
Loading…
x
Reference in New Issue
Block a user