From 024528e0c2ce75ac28ebbbc1220d4ae4045d3adf Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Thu, 27 Nov 1997 13:59:44 -0200 Subject: global variables starting with '.' are protected in Lua (temporarily at least...) --- lbuiltin.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lbuiltin.c') diff --git a/lbuiltin.c b/lbuiltin.c index 589e591b..53dd4032 100644 --- a/lbuiltin.c +++ b/lbuiltin.c @@ -1,5 +1,5 @@ /* -** $Id: lbuiltin.c,v 1.9 1997/11/26 18:53:45 roberto Exp roberto $ +** $Id: lbuiltin.c,v 1.10 1997/11/26 19:40:27 roberto Exp roberto $ ** Built-in functions ** See Copyright Notice in lua.h */ @@ -217,19 +217,29 @@ static void luaI_assert (void) } +static void check_globalname (char *n) +{ + if (n[0] == '.') + luaL_verror("cannot change variable `%.50s' (starts with `.')", n); +} + static void setglobal (void) { + char *n = luaL_check_string(1); lua_Object value = luaL_nonnullarg(2); + check_globalname(n); lua_pushobject(value); - lua_setglobal(luaL_check_string(1)); + lua_setglobal(n); lua_pushobject(value); /* return given value */ } static void rawsetglobal (void) { + char *n = luaL_check_string(1); lua_Object value = luaL_nonnullarg(2); + check_globalname(n); lua_pushobject(value); - lua_rawsetglobal(luaL_check_string(1)); + lua_rawsetglobal(n); lua_pushobject(value); /* return given value */ } -- cgit v1.2.3-55-g6feb