diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-06-22 17:37:23 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-06-22 17:37:23 -0300 |
| commit | 521b38532a29ab0590be722712b7c367607e5ba9 (patch) | |
| tree | d675eb5dc86c6ccd9db3409be2a6c4bc441f97bf /lapi.c | |
| parent | 36b6fe8d175bb2aec8fc55ffb090eab90cb12fd8 (diff) | |
| download | lua-521b38532a29ab0590be722712b7c367607e5ba9.tar.gz lua-521b38532a29ab0590be722712b7c367607e5ba9.tar.bz2 lua-521b38532a29ab0590be722712b7c367607e5ba9.zip | |
better interfaces for luaD_calln (x luaD_call)
Diffstat (limited to 'lapi.c')
| -rw-r--r-- | lapi.c | 18 |
1 files changed, 8 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 1.45 1999/05/14 12:24:20 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.46 1999/06/17 17:04:03 roberto Exp roberto $ |
| 3 | ** Lua API | 3 | ** Lua API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -131,7 +131,7 @@ int lua_callfunction (lua_Object function) | |||
| 131 | else { | 131 | else { |
| 132 | luaD_openstack((L->stack.top-L->stack.stack)-L->Cstack.base); | 132 | luaD_openstack((L->stack.top-L->stack.stack)-L->Cstack.base); |
| 133 | set_normalized(L->stack.stack+L->Cstack.base, Address(function)); | 133 | set_normalized(L->stack.stack+L->Cstack.base, Address(function)); |
| 134 | return luaD_protectedrun(MULT_RET); | 134 | return luaD_protectedrun(); |
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | 137 | ||
| @@ -675,17 +675,15 @@ lua_Object lua_getref (int ref) { | |||
| 675 | ** API: set a function as a fallback | 675 | ** API: set a function as a fallback |
| 676 | */ | 676 | */ |
| 677 | 677 | ||
| 678 | static void do_unprotectedrun (lua_CFunction f, int nParams, int nResults) | 678 | static void do_unprotectedrun (lua_CFunction f, int nParams, int nResults) { |
| 679 | { | ||
| 680 | StkId base = (L->stack.top-L->stack.stack)-nParams; | ||
| 681 | luaD_openstack(nParams); | 679 | luaD_openstack(nParams); |
| 682 | L->stack.stack[base].ttype = LUA_T_CPROTO; | 680 | (L->stack.top-nParams)->ttype = LUA_T_CPROTO; |
| 683 | L->stack.stack[base].value.f = f; | 681 | (L->stack.top-nParams)->value.f = f; |
| 684 | luaD_call(base+1, nResults); | 682 | luaD_calln(nParams, nResults); |
| 685 | } | 683 | } |
| 686 | 684 | ||
| 687 | lua_Object lua_setfallback (char *name, lua_CFunction fallback) | 685 | |
| 688 | { | 686 | lua_Object lua_setfallback (char *name, lua_CFunction fallback) { |
| 689 | lua_pushstring(name); | 687 | lua_pushstring(name); |
| 690 | lua_pushcfunction(fallback); | 688 | lua_pushcfunction(fallback); |
| 691 | do_unprotectedrun(luaT_setfallback, 2, 1); | 689 | do_unprotectedrun(luaT_setfallback, 2, 1); |
