summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/parser/cxfa_node.cpp')
-rw-r--r--xfa/fxfa/parser/cxfa_node.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 12a6ee4a0a..54b4661ce3 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -478,7 +478,7 @@ CXFA_Node* CXFA_Node::CloneTemplateToForm(bool bRecursive) {
return pClone;
}
-CXFA_Node* CXFA_Node::GetTemplateNode() const {
+CXFA_Node* CXFA_Node::GetTemplateNodeIfExists() const {
return m_pAuxNode;
}
@@ -1286,7 +1286,10 @@ void CXFA_Node::RemoveItem(CXFA_Node* pRemoveInstance,
CXFA_Node* CXFA_Node::CreateInstance(bool bDataMerge) {
CXFA_Document* pDocument = GetDocument();
- CXFA_Node* pTemplateNode = GetTemplateNode();
+ CXFA_Node* pTemplateNode = GetTemplateNodeIfExists();
+ if (!pTemplateNode)
+ return nullptr;
+
CXFA_Node* pFormParent = GetParent();
CXFA_Node* pDataScope = nullptr;
for (CXFA_Node* pRootBoundNode = pFormParent;
@@ -1300,6 +1303,7 @@ CXFA_Node* CXFA_Node::CreateInstance(bool bDataMerge) {
pDataScope = ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record));
ASSERT(pDataScope);
}
+
CXFA_Node* pInstance = pDocument->DataMerge_CopyContainer(
pTemplateNode, pFormParent, pDataScope, true, bDataMerge, true);
if (pInstance) {
@@ -1590,8 +1594,10 @@ bool CXFA_Node::IsOpenAccess() {
}
CXFA_Value* CXFA_Node::GetDefaultValue() {
- CXFA_Node* pTemNode = GetTemplateNode();
- return pTemNode->JSObject()->GetProperty<CXFA_Value>(0, XFA_Element::Value);
+ CXFA_Node* pTemNode = GetTemplateNodeIfExists();
+ return pTemNode ? pTemNode->JSObject()->GetProperty<CXFA_Value>(
+ 0, XFA_Element::Value)
+ : nullptr;
}
CXFA_Value* CXFA_Node::GetFormValue() const {