summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-05-20 22:39:07 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-05-20 22:39:07 (GMT)
commit045db3f61f776f8472a6ce7bd2ddbeda77cae872 (patch)
treee8e93fbdbf2e9ed37af321eb53b7d40399349594 /src
parentb3f69eb2b306318be73327bf55a7af79e3e2922f (diff)
downloaduscxml-045db3f61f776f8472a6ce7bd2ddbeda77cae872.zip
uscxml-045db3f61f776f8472a6ce7bd2ddbeda77cae872.tar.gz
uscxml-045db3f61f776f8472a6ce7bd2ddbeda77cae872.tar.bz2
Passing all Lua tests again - might have broken external builds
Diffstat (limited to 'src')
-rw-r--r--src/uscxml/interpreter/BasicContentExecutor.cpp6
-rw-r--r--src/uscxml/interpreter/FastMicroStep.cpp19
-rw-r--r--src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp2
3 files changed, 18 insertions, 9 deletions
diff --git a/src/uscxml/interpreter/BasicContentExecutor.cpp b/src/uscxml/interpreter/BasicContentExecutor.cpp
index 2010ae2..c1eb8f6 100644
--- a/src/uscxml/interpreter/BasicContentExecutor.cpp
+++ b/src/uscxml/interpreter/BasicContentExecutor.cpp
@@ -444,6 +444,9 @@ void BasicContentExecutor::invoke(XERCESC_NS::DOMElement* element) {
// content
std::list<DOMElement*> contents = DOMUtils::filterChildElements(XML_PREFIX(element).str() + "content", element);
if (contents.size() > 0) {
+#if 1
+ invokeEvent.data.node = contents.front();
+#else
Data d = elementAsData(contents.front());
if (d.type == Data::INTERPRETED && d.atom.size() > 0) {
// immediately evaluate!
@@ -451,9 +454,10 @@ void BasicContentExecutor::invoke(XERCESC_NS::DOMElement* element) {
} else {
invokeEvent.data = d;
}
+#endif
}
} catch (Event e) {
- ERROR_EXECUTION_THROW2("Syntax error in send element content", element);
+ ERROR_EXECUTION_THROW2("Syntax error in invoke element content", element);
}
// autoforward
diff --git a/src/uscxml/interpreter/FastMicroStep.cpp b/src/uscxml/interpreter/FastMicroStep.cpp
index fd9f1a9..bf58f7b 100644
--- a/src/uscxml/interpreter/FastMicroStep.cpp
+++ b/src/uscxml/interpreter/FastMicroStep.cpp
@@ -289,19 +289,24 @@ void FastMicroStep::init(XERCESC_NS::DOMElement* scxml) {
DOMNode* parent = _states[i]->element->getParentNode();
if (parent && parent->getNodeType() == DOMNode::ELEMENT_NODE) {
State* uscxmlState = (State*)parent->getUserData(X("uscxmlState"));
- // parent
- _states[i]->parent = uscxmlState->documentOrder;
+ // parent maybe a content element
+ if (uscxmlState != NULL) {
+ _states[i]->parent = uscxmlState->documentOrder;
+ }
}
while(parent && parent->getNodeType() == DOMNode::ELEMENT_NODE) {
State* uscxmlState = (State*)parent->getUserData(X("uscxmlState"));
- // ancestors
- BIT_SET_AT(uscxmlState->documentOrder, _states[i]->ancestors);
+ if (uscxmlState == NULL)
+ break;
- // children
- BIT_SET_AT(i, uscxmlState->children);
- parent = parent->getParentNode();
+ // ancestors
+ BIT_SET_AT(uscxmlState->documentOrder, _states[i]->ancestors);
+
+ // children
+ BIT_SET_AT(i, uscxmlState->children);
+ parent = parent->getParentNode();
}
}
diff --git a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
index f80d427..885f70d 100644
--- a/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
+++ b/src/uscxml/plugins/invoker/scxml/USCXMLInvoker.cpp
@@ -146,7 +146,7 @@ void USCXMLInvoker::invoke(const std::string& source, const Event& invokeEvent)
// std::cout << *document << std::endl;
// TODO: where do we get the namespace from?
- _invokedInterpreter = Interpreter::fromDocument(document, _interpreter->getBaseURL());
+ _invokedInterpreter = Interpreter::fromDocument(document, _interpreter->getBaseURL(), false);
} else {
_isActive = false;