summaryrefslogtreecommitdiffstats
path: root/src/uscxml/interpreter/FastMicroStep.cpp
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/uscxml/interpreter/FastMicroStep.cpp
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/uscxml/interpreter/FastMicroStep.cpp')
-rw-r--r--src/uscxml/interpreter/FastMicroStep.cpp19
1 files changed, 12 insertions, 7 deletions
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();
}
}