diff options
author | Eugene Sandulenko | 2019-06-06 09:48:54 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2019-09-03 17:16:43 +0200 |
commit | 418ad2c94e0e86c04ea8f19760cd3344db99647b (patch) | |
tree | 846966313cd0716291f9659814182a91c433b42a | |
parent | 58a645dadb84f80ffe66a9d81da1302f5eb975cd (diff) | |
download | scummvm-rg350-418ad2c94e0e86c04ea8f19760cd3344db99647b.tar.gz scummvm-rg350-418ad2c94e0e86c04ea8f19760cd3344db99647b.tar.bz2 scummvm-rg350-418ad2c94e0e86c04ea8f19760cd3344db99647b.zip |
HDB: Add error handling during level_init execution
-rw-r--r-- | engines/hdb/lua-script.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/engines/hdb/lua-script.cpp b/engines/hdb/lua-script.cpp index 1580552151..56e0ead5e8 100644 --- a/engines/hdb/lua-script.cpp +++ b/engines/hdb/lua-script.cpp @@ -684,8 +684,19 @@ bool LuaScript::initScript(Common::SeekableReadStream *stream, int32 length) { return false; } + + // Error handling function to be executed after the function is put on the stack + lua_rawgeti(_state, LUA_REGISTRYINDEX, _pcallErrorhandlerRegistryIndex); + lua_insert(_state, -2); + lua_getglobal(_state, "level_init"); - lua_pcall(_state, 0, 0, 0); + + if (lua_pcall(_state, 0, 0, -2)) { + error("An error occured while executing \"%s\": %s.", "level_init", lua_tostring(_state, -1)); + lua_pop(_state, -1); + + return false; + } return true; } |