lua_next segfault на LUA_ENVIRONINDEX? - PullRequest
2 голосов
/ 06 августа 2020

Следующая программа C, которая использует функцию Lua API lua_next, чтобы попытаться начать итерацию таблицы LUA_ENVIRONINDEX, вылетает при вызове lua_next ...

#include <lua5.1/lua.hpp>

int main() {
  lua_State* L = luaL_newstate();
  lua_pushnil(L);
  lua_next(L, LUA_ENVIRONINDEX);
}

Есть идеи, почему?

1 Ответ

3 голосов
/ 06 августа 2020

В руководстве сказано, что LUA_ENVIRONINDEX «дает среду для работы C функции». В вашем коде нет «запущенной C функции» в смысле Lua: main не был вызван из Lua.

Take lua.c. Если вы поместите свой код в main, то, как вы выяснили, будет ошибка sh. Если поместить свой код в pmain, который вызывается из Lua, то cra sh.

не будет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...