Итерировать по таблице Lua

Я пытаюсь перебрать таблицу lua, но продолжаю получать эту ошибку:

invalid key to 'next'

Я знаю, что индекс начинается с -8, и я знаю, что там есть таблица, потому что она получает первое (и единственное) значение в этом. Однако он пытается выполнить цикл снова, хотя я знаю, что в таблице только одна строка.

if (lua_istable(L, index))
{
    lua_pushnil(L);

    // This is needed for it to even get the first value
    index--;

    while (lua_next(L, index) != 0)
    {
        const char *item = luaL_checkstring(L, -1);
        lua_pop(L, 1);

        printf("%s\n", item);
    }
}
else
{
    luaL_typerror(L, index, "string table");
}

Любая помощь будет принята с благодарностью.

Это отлично работает, когда я использую положительный индекс (если я не удалите из него 1)

Изменить: Я заметил, что не получаю эту ошибку, если оставлю значение элемента в покое. Только когда я начинаю читать значение элемента, я получаю эту ошибку. Получив значение из таблицы, я вызываю другую функцию Lua, может ли это нарушить работу lua_next?

15
задан hjpotter92 2 May 2014 в 21:38
поделиться