diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-06-13 13:24:09 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-06-13 13:24:09 (GMT) |
commit | 07395f2766d70c55f51674dc3027d7b19a4ccc26 (patch) | |
tree | 8b74a3b00f41e1e7ea124a37e41c1168385bc4b4 /src/uscxml/plugins | |
parent | dabfa4eb94e376f78ae32d8eca998ba9c4875f57 (diff) | |
download | uscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.zip uscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.tar.gz uscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.tar.bz2 |
Resolved issue 83
Diffstat (limited to 'src/uscxml/plugins')
-rw-r--r-- | src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
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; } |