@@ -51,6 +51,8 @@ void* LoadAPI(const char* name) {
5151 return handler;
5252}
5353#endif
54+ int LUA_REGISTRYINDEX = 0 ;
55+ int LUA_GLOBALSINDEX = 0 ;
5456
5557IMP_LUA_API (lua_gettop);
5658IMP_LUA_API (lua_settop);
@@ -99,6 +101,7 @@ IMP_LUA_API_E(lua_remove);
99101IMP_LUA_API_E (lua_tointegerx);
100102IMP_LUA_API_E (lua_tonumberx);
101103IMP_LUA_API_E (lua_getglobal);
104+ IMP_LUA_API_E (lua_setglobal);
102105IMP_LUA_API_E (lua_callk);
103106IMP_LUA_API_E (lua_pcallk);
104107IMP_LUA_API_E (luaL_setfuncs);
@@ -129,9 +132,20 @@ lua_Number lua_tonumber(lua_State* L, int idx) {
129132
130133int lua_getglobal (lua_State* L, const char * name) {
131134 if (luaVersion == LuaVersion::LUA_51) {
132- return lua_getfield (L, -10002 , name);
135+ return lua_getfield (L, LUA_GLOBALSINDEX, name);
136+ }
137+ else {
138+ return e_lua_getglobal (L, name);
139+ }
140+ }
141+
142+ void lua_setglobal (lua_State* L, const char * name) {
143+ if (luaVersion == LuaVersion::LUA_51) {
144+ return lua_setfield (L, LUA_GLOBALSINDEX, name);
145+ }
146+ else {
147+ return e_lua_setglobal (L, name);
133148 }
134- return e_lua_getglobal (L, name);
135149}
136150
137151void lua_call (lua_State* L, int nargs, int nresults) {
@@ -188,8 +202,6 @@ void lua_remove(lua_State *L, int idx) {
188202 }
189203}
190204
191- int LUA_REGISTRYINDEX = 0 ;
192-
193205extern " C" bool SetupLuaAPI () {
194206 LOAD_LUA_API (lua_gettop);
195207 LOAD_LUA_API (lua_settop);
@@ -239,6 +251,7 @@ extern "C" bool SetupLuaAPI() {
239251 LOAD_LUA_API_E (lua_tointegerx);
240252 LOAD_LUA_API_E (lua_tonumberx);
241253 LOAD_LUA_API_E (lua_getglobal);
254+ LOAD_LUA_API_E (lua_setglobal);
242255 LOAD_LUA_API_E (lua_callk);
243256 LOAD_LUA_API_E (lua_pcallk);
244257 LOAD_LUA_API_E (luaL_setfuncs);
@@ -249,15 +262,18 @@ extern "C" bool SetupLuaAPI() {
249262 if (e_lua_rotate) {
250263 luaVersion = LuaVersion::LUA_53;
251264 LUA_REGISTRYINDEX = -1001000 ;
265+ LUA_GLOBALSINDEX = 2 ;
252266 }
253267 else if (e_lua_callk) {
254268 luaVersion = LuaVersion::LUA_52;
255269 // todo
256270 LUA_REGISTRYINDEX = -1001000 ;
271+ LUA_GLOBALSINDEX = 2 ;
257272 }
258273 else {
259274 luaVersion = LuaVersion::LUA_51;
260275 LUA_REGISTRYINDEX = -10000 ;
276+ LUA_GLOBALSINDEX = -10002 ;
261277 }
262278 printf (" [EMMY]lua version: %d\n " , luaVersion);
263279 return true ;
0 commit comments