Здесь я стремлюсь к абсолютному минимализму. (Прошло некоторое время с тех пор, как я работал с Lua C API.)
#include <lua.hpp>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
lua_State* state = luaL_newstate();
luaL_openlibs(state);
string input;
while (getline(cin, input))
{
auto error = luaL_dostring(state, input.c_str());
if (error)
{
cerr << "Lua Error: " << lua_tostring(state, -1) << '\n';
lua_pop(state, 1);
}
}
lua_close(state);
return 0;
}
Эта программа работает нормально, пока я кормлю ее идеальным Lua. Однако, если я ввожу что-то неправильное (например, asdf()
), программа вылетает! Почему он не обрабатывает мою ошибку изящно?
Я уже пытался разорвать звонки. Он падает при вызове самого lua_pcall
. Я никогда не перехожу эту черту.
stderr
? - person imreal   schedule 27.03.2014auto
наint
.) - person lhf   schedule 27.03.2014lua_pcall
. Вы сможете воспроизвести мои результаты, если загрузите статическую библиотеку 5.2.1 x64. - person TheBuzzSaw   schedule 27.03.2014