summaryrefslogtreecommitdiffstats
path: root/src/uscxml
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-06-13 13:24:09 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-06-13 13:24:09 (GMT)
commit07395f2766d70c55f51674dc3027d7b19a4ccc26 (patch)
tree8b74a3b00f41e1e7ea124a37e41c1168385bc4b4 /src/uscxml
parentdabfa4eb94e376f78ae32d8eca998ba9c4875f57 (diff)
downloaduscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.zip
uscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.tar.gz
uscxml-07395f2766d70c55f51674dc3027d7b19a4ccc26.tar.bz2
Resolved issue 83
Diffstat (limited to 'src/uscxml')
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp21
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;
}