]> git.saurik.com Git - redis.git/commitdiff
mt.declared is no longer needed.
authorantirez <antirez@gmail.com>
Fri, 13 Apr 2012 11:36:08 +0000 (13:36 +0200)
committerantirez <antirez@gmail.com>
Fri, 13 Apr 2012 14:23:29 +0000 (16:23 +0200)
Lua global protection can now be simpified becuase we no longer have the
global() function. It's useless to occupy memory with this table, it is
also not faster because the metamethods we use are only called when a
global object does not exist or we are trying to create it from a
script.

src/scripting.c

index ae906c68cc4a3157b6ebb70698635fcdb45e76b0..76b25ad2334e5e455f238e6426ea59d19ea45574 100644 (file)
@@ -426,19 +426,17 @@ void scriptingEnableGlobalsProtection(lua_State *lua) {
      * Modified to be adapted to Redis. */
     s[j++]="local mt = {}\n";
     s[j++]="setmetatable(_G, mt)\n";
-    s[j++]="mt.declared = {}\n";
     s[j++]="mt.__newindex = function (t, n, v)\n";
-    s[j++]="  if not mt.declared[n] and debug.getinfo(2) then\n";
+    s[j++]="  if debug.getinfo(2) then\n";
     s[j++]="    local w = debug.getinfo(2, \"S\").what\n";
     s[j++]="    if w ~= \"main\" and w ~= \"C\" then\n";
     s[j++]="      error(\"Script attempted to create global variable '\"..tostring(n)..\"'\", 2)\n";
     s[j++]="    end\n";
-    s[j++]="    mt.declared[n] = true\n";
     s[j++]="  end\n";
     s[j++]="  rawset(t, n, v)\n";
     s[j++]="end\n";
     s[j++]="mt.__index = function (t, n)\n";
-    s[j++]="  if debug.getinfo(2) and not mt.declared[n] and debug.getinfo(2, \"S\").what ~= \"C\" then\n";
+    s[j++]="  if debug.getinfo(2) and debug.getinfo(2, \"S\").what ~= \"C\" then\n";
     s[j++]="    error(\"Script attempted to access unexisting global variable '\"..n..\"'\", 2)\n";
     s[j++]="  end\n";
     s[j++]="  return rawget(t, n)\n";