diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/uscxml/interpreter/BasicContentExecutor.cpp | 8 | ||||
-rw-r--r-- | src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp | 22 |
2 files changed, 22 insertions, 8 deletions
diff --git a/src/uscxml/interpreter/BasicContentExecutor.cpp b/src/uscxml/interpreter/BasicContentExecutor.cpp index 9f58b46..6b12afd 100644 --- a/src/uscxml/interpreter/BasicContentExecutor.cpp +++ b/src/uscxml/interpreter/BasicContentExecutor.cpp @@ -630,12 +630,14 @@ Data BasicContentExecutor::elementAsData(XERCESC_NS::DOMElement* element) { for (auto textIter = textChildren.begin(); textIter != textChildren.end(); textIter++) { contentSS << X((*textIter)->getNodeValue()); } - try { +#if 0 + try { Data d = _callbacks->getAsData(contentSS.str()); if (!d.empty()) return d; } catch(...) {} - +#endif + // test294, test562 return Data(spaceNormalize(contentSS.str()), Data::VERBATIM); } } @@ -644,4 +646,4 @@ Data BasicContentExecutor::elementAsData(XERCESC_NS::DOMElement* element) { return Data(); } -}
\ No newline at end of file +} diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp index 4b7ed67..ed96622 100644 --- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp +++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp @@ -326,6 +326,7 @@ void LuaDataModel::setEvent(const Event& event) { Data LuaDataModel::evalAsData(const std::string& content) { Data data; + ErrorEvent originalError; std::string trimmedExpr = boost::trim_copy(content); @@ -337,21 +338,32 @@ Data LuaDataModel::evalAsData(const std::string& content) { lua_pop(_luaState, retVals); return data; } catch (ErrorEvent e) { + originalError = e; } + int retVals = 0; try { // evaluate again without the return() - int retVals = luaEval(_luaState, trimmedExpr); + retVals = luaEval(_luaState, trimmedExpr); + } catch (ErrorEvent e) { + throw originalError; // we will assume syntax error and throw + } + if (retVals == 0) + throw originalError; // we will assume syntax error and throw + + + try { if (retVals == 1) { data = getLuaAsData(_luaState, luabridge::LuaRef::fromStack(_luaState, -1)); } lua_pop(_luaState, retVals); return data; + + } catch (ErrorEvent e) { + throw e; // we will assume syntax error and throw + } - } catch (ErrorEvent e) { - throw e; // we will assume syntax error and throw - } return data; } @@ -583,4 +595,4 @@ std::string LuaDataModel::andExpressions(std::list<std::string> exprs) { } -}
\ No newline at end of file +} |