From 07395f2766d70c55f51674dc3027d7b19a4ccc26 Mon Sep 17 00:00:00 2001 From: Stefan Radomski Date: Mon, 13 Jun 2016 15:24:09 +0200 Subject: Resolved issue 83 --- src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp | 21 ++++++++++++++------- test/issues/test-issue83.scxml | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 test/issues/test-issue83.scxml diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp index 6fc5ac4..67294da 100644 --- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp +++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp @@ -334,16 +334,23 @@ Data LuaDataModel::evalAsData(const std::string& content) { data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1)); } lua_pop(_luaState, retVals); + return data; } catch (ErrorEvent e) { - int retVals = luaEval(_luaState, trimmedExpr); + } + + try { + // evaluate again without the return() + int retVals = luaEval(_luaState, trimmedExpr); + if (retVals == 1) { data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1)); - lua_pop(_luaState, retVals); - } else { - lua_pop(_luaState, retVals); - throw e; // we will assume syntax error and throw - } - } + } + lua_pop(_luaState, retVals); + return data; + + } catch (ErrorEvent e) { + throw e; // we will assume syntax error and throw + } return data; } diff --git a/test/issues/test-issue83.scxml b/test/issues/test-issue83.scxml new file mode 100644 index 0000000..c3afb86 --- /dev/null +++ b/test/issues/test-issue83.scxml @@ -0,0 +1,14 @@ + + + + + + + + + + + + -- cgit v0.12