Avoid CHECK() failure in CXFA_Document::DataMerge_CopyContainer()
- Update cheap DCHECK() in DataMerge_CopyContainer() to a CHECK()
- Change offending caller to avoid the CHECK() failure.
Bug: 332930108
Change-Id: I6ae439383dd20129f4eab525b7c8b4d7e65452a4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/125370
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
index 131ea4d..764b54c 100644
--- a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
@@ -921,15 +921,17 @@
CXFA_Node* pFormNode = pBookendNode->GetContainerParent();
CXFA_Node* pLeaderTemplate =
ResolveBookendLeaderOrTrailer(pBookendNode, bLeader);
- if (!pLeaderTemplate)
+ if (!pLeaderTemplate || !pLeaderTemplate->IsContainerNode()) {
return nullptr;
+ }
CXFA_Document* pDocument = pBookendNode->GetDocument();
CXFA_Node* pDataScope = XFA_DataMerge_FindDataScope(pFormNode);
CXFA_Node* pBookendAppendNode = pDocument->DataMerge_CopyContainer(
pLeaderTemplate, pFormNode, pDataScope, true, true, true);
- if (!pBookendAppendNode)
+ if (!pBookendAppendNode) {
return nullptr;
+ }
pDocument->DataMerge_UpdateBindingRelations(pBookendAppendNode);
SetLayoutGeneratedNodeFlag(pBookendAppendNode);
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp
index 43a957d..8be64a4 100644
--- a/xfa/fxfa/parser/cxfa_document.cpp
+++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -1629,7 +1629,7 @@
bool bOneInstance,
bool bDataMerge,
bool bUpLevel) {
- DCHECK(pTemplateNode->IsContainerNode());
+ CHECK(pTemplateNode->IsContainerNode());
switch (pTemplateNode->GetElementType()) {
case XFA_Element::Area:
case XFA_Element::PageArea: