aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/lapi.c b/lapi.c
index 8426dea0..acf50b14 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 2.92 2009/09/28 16:32:50 roberto Exp roberto $ 2** $Id: lapi.c,v 2.93 2009/10/05 16:44:33 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*/
@@ -55,13 +55,13 @@ static TValue *index2addr (lua_State *L, int idx) {
55 return L->top + idx; 55 return L->top + idx;
56 } 56 }
57 else switch (idx) { /* pseudo-indices */ 57 else switch (idx) { /* pseudo-indices */
58 case LUA_REGISTRYINDEX: return registry(L); 58 case LUA_REGISTRYINDEX: return &G(L)->l_registry;
59 case LUA_ENVIRONINDEX: { 59 case LUA_ENVIRONINDEX: {
60 Closure *func = curr_func(L); 60 Closure *func = curr_func(L);
61 sethvalue(L, &L->env, func->c.env); 61 sethvalue(L, &L->env, func->c.env);
62 return &L->env; 62 return &L->env;
63 } 63 }
64 case LUA_GLOBALSINDEX: return gt(L); 64 case LUA_GLOBALSINDEX: return &G(L)->l_gt;
65 default: { 65 default: {
66 Closure *func = curr_func(L); 66 Closure *func = curr_func(L);
67 idx = LUA_GLOBALSINDEX - idx; 67 idx = LUA_GLOBALSINDEX - idx;
@@ -76,7 +76,7 @@ static TValue *index2addr (lua_State *L, int idx) {
76 76
77static Table *getcurrenv (lua_State *L) { 77static Table *getcurrenv (lua_State *L) {
78 if (L->ci->previous == NULL) /* no enclosing function? */ 78 if (L->ci->previous == NULL) /* no enclosing function? */
79 return hvalue(gt(L)); /* use global table as environment */ 79 return hvalue(&G(L)->l_gt); /* use global table as environment */
80 else { 80 else {
81 Closure *func = curr_func(L); 81 Closure *func = curr_func(L);
82 return func->c.env; 82 return func->c.env;
@@ -633,9 +633,6 @@ LUA_API void lua_getfenv (lua_State *L, int idx) {
633 case LUA_TUSERDATA: 633 case LUA_TUSERDATA:
634 sethvalue(L, L->top, uvalue(o)->env); 634 sethvalue(L, L->top, uvalue(o)->env);
635 break; 635 break;
636 case LUA_TTHREAD:
637 setobj2s(L, L->top, gt(thvalue(o)));
638 break;
639 default: 636 default:
640 setnilvalue(L->top); 637 setnilvalue(L->top);
641 break; 638 break;
@@ -755,9 +752,6 @@ LUA_API int lua_setfenv (lua_State *L, int idx) {
755 case LUA_TUSERDATA: 752 case LUA_TUSERDATA:
756 uvalue(o)->env = hvalue(L->top - 1); 753 uvalue(o)->env = hvalue(L->top - 1);
757 break; 754 break;
758 case LUA_TTHREAD:
759 sethvalue(L, gt(thvalue(o)), hvalue(L->top - 1));
760 break;
761 default: 755 default:
762 res = 0; 756 res = 0;
763 break; 757 break;