From b7eaa1eaf74569a28ffc33d96a0ea18fd10353d2 Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 27 Mar 2012 03:15:57 +0000 Subject: [PATCH] luainterface - throw exceptions when lua_resume errors --- BizHawk.MultiClient/LuaInterface.dll | Bin 60928 -> 60928 bytes LuaInterface/LuaInterface/Lua.cs | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/BizHawk.MultiClient/LuaInterface.dll b/BizHawk.MultiClient/LuaInterface.dll index e33a7208cf5b6883b846fd2de6752e01cf906643..bbb3701cb8ca952aafadb0dd3de18e22a29e72f9 100644 GIT binary patch delta 7135 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 Axc~qF delta 7059 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 diff --git a/LuaInterface/LuaInterface/Lua.cs b/LuaInterface/LuaInterface/Lua.cs index 05441b361d..a5d55c1584 100644 --- a/LuaInterface/LuaInterface/Lua.cs +++ b/LuaInterface/LuaInterface/Lua.cs @@ -512,9 +512,15 @@ namespace LuaInterface - public void Resume(int narg) + public int Resume(int narg) { - LuaDLL.lua_resume(luaState, narg); + int ret = LuaDLL.lua_resume(luaState, narg); + if (ret == 1 /*LUA_YIELD*/) + return 1; //yielded + if (ret == 0) //normal termination - what to do? + return 0; + //error. throw exception with error message (TBD - debug api to get call stack) + throw new LuaException(LuaDLL.lua_tostring(luaState, -1)); } public void Yield(int nresults) {