2014-01-14 5 views
2

У меня есть следующий код, который отлично работает и делает именно то, что я хочу в Lua 5.1, но пытаюсь портировать его до 5.2 (и отсутствие LUA_GLOBALSINDEX) У меня есть проблемы ... Любой может скажите мне, что равнозначно:Porting Lua 5.1 thread code to 5.2

thread->L = lua_newthread(G); 

lua_pushvalue(G, -1); 

thread->index = luaL_ref(G, LUA_REGISTRYINDEX); 

lua_newtable(thread->L); 

lua_newtable(thread->L); 

lua_pushliteral(thread->L, "__index"); 

-- Problem... no more LUA_GLOBALSINDEX, cannot find equivalent for push. 
lua_pushvalue(thread->L, LUA_GLOBALSINDEX); 

lua_settable(thread->L, -3); 

lua_setmetatable(thread->L, -2); 

-- Problem... no more LUA_GLOBALSINDEX, cannot find equivalent for replace. 
lua_replace(thread->L, LUA_GLOBALSINDEX); 

в Lua 5.2?

Tks!

ответ

2

Вы должны использовать lua_pushglobaltable(thead->L) (или если у вас есть, lua_rawgeti(thread->L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS). Это объясняется в принятом ответе на Lua 5.2 LUA_GLOBALSINDEX Alternative.