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: