summaryrefslogtreecommitdiffstats
path: root/src/uscxml
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml')
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
index 6fa56df..8eb1ce1 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
@@ -341,6 +341,16 @@ bool LuaDataModel::isLocation(const std::string& expr) {
}
bool LuaDataModel::isValidSyntax(const std::string& expr) {
+ int preStack = lua_gettop(_luaState);
+ int err = luaL_loadstring (_luaState, expr.c_str());
+
+ // clean stack again
+ lua_pop(_luaState, lua_gettop(_luaState) - preStack);
+
+
+ if (err == LUA_ERRSYNTAX)
+ return false;
+
return true;
}