lua

A copy of the Lua development repository
Log | Files | Refs | README

commit c5050b1c4124967f695a22021c5fedfec381774c
parent b9063a08f522a62a8fc3b282cd7782af3a30487d
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Mon, 16 Nov 2009 13:50:39 -0200

functions 'getfenv' and 'setfenv' are deprecated

Diffstat:
Mlbaselib.c | 17++++++++++++++---
Mluaconf.h | 10+++++++++-
2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/lbaselib.c b/lbaselib.c @@ -1,5 +1,5 @@ /* -** $Id: lbaselib.c,v 1.222 2009/11/09 18:55:17 roberto Exp roberto $ +** $Id: lbaselib.c,v 1.223 2009/11/13 17:01:40 roberto Exp roberto $ ** Basic library ** See Copyright Notice in lua.h */ @@ -107,6 +107,9 @@ static int luaB_setmetatable (lua_State *L) { } + +#if defined(LUA_COMPAT_FENV) + static void getfunc (lua_State *L, int opt) { if (lua_isfunction(L, 1)) lua_pushvalue(L, 1); else { @@ -121,7 +124,6 @@ static void getfunc (lua_State *L, int opt) { } } - static int luaB_getfenv (lua_State *L) { getfunc(L, 1); if (lua_iscfunction(L, -1)) /* is a C function? */ @@ -131,7 +133,6 @@ static int luaB_getfenv (lua_State *L) { return 1; } - static int luaB_setfenv (lua_State *L) { luaL_checktype(L, 2, LUA_TTABLE); getfunc(L, 0); @@ -142,6 +143,16 @@ static int luaB_setfenv (lua_State *L) { return 1; } +#else + +static int luaB_getfenv (lua_State *L) { + return luaL_error(L, "getfenv/setfenv deprecated"); +} + +#define luaB_setfenv luaB_getfenv + +#endif + static int luaB_rawequal (lua_State *L) { luaL_checkany(L, 1); diff --git a/luaconf.h b/luaconf.h @@ -1,5 +1,5 @@ /* -** $Id: luaconf.h,v 1.111 2009/10/11 20:02:19 roberto Exp roberto $ +** $Id: luaconf.h,v 1.112 2009/10/23 12:31:12 roberto Exp roberto $ ** Configuration file for Lua ** See Copyright Notice in lua.h */ @@ -329,6 +329,14 @@ */ /* +@@ LUA_COMPAT_FENV controls de presence of functions 'setfenv/getfenv'. +** CHANGE it (undefine it) if as soon as you rewrite your code to +** avoid using those functions. (You can replace them with lexical +** environments, 'loadin', or the debug library.) +*/ +/* #define LUA_COMPAT_FENV */ + +/* @@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library. ** CHANGE it (undefine it) if as soon as you rewrite all calls 'log10(x)' ** as 'log(x, 10)'