| Index: xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
|
| diff --git a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
|
| index 22d3c625c97d014532c0beefb152f55a9f6fca7d..59e663eec112a660d21b8cf1ed677587a4d0a2d9 100644
|
| --- a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
|
| +++ b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp
|
| @@ -397,52 +397,48 @@ static CXFA_Node* XFA_DataMerge_FindGlobalDataNode(CXFA_Document* pDocument,
|
| CFX_WideStringC wsName,
|
| CXFA_Node* pDataScope,
|
| XFA_ELEMENT eMatchNodeType) {
|
| - uint32_t dwNameHash =
|
| - wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.c_str(),
|
| - wsName.GetLength());
|
| - if (dwNameHash != 0) {
|
| - CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash);
|
| - if (!pBounded) {
|
| - pBounded = XFA_DataMerge_ScopeMatchGlobalBinding(pDataScope, dwNameHash,
|
| - eMatchNodeType);
|
| - if (pBounded) {
|
| - XFA_DataMerge_RegisterGlobalBinding(pDocument, dwNameHash, pBounded);
|
| - }
|
| + if (wsName.IsEmpty())
|
| + return nullptr;
|
| +
|
| + uint32_t dwNameHash = FX_HashCode_GetW(wsName, false);
|
| + CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash);
|
| + if (!pBounded) {
|
| + pBounded = XFA_DataMerge_ScopeMatchGlobalBinding(pDataScope, dwNameHash,
|
| + eMatchNodeType);
|
| + if (pBounded) {
|
| + XFA_DataMerge_RegisterGlobalBinding(pDocument, dwNameHash, pBounded);
|
| }
|
| - return pBounded;
|
| }
|
| - return NULL;
|
| + return pBounded;
|
| }
|
| +
|
| static CXFA_Node* XFA_DataMerge_FindOnceDataNode(CXFA_Document* pDocument,
|
| CFX_WideStringC wsName,
|
| CXFA_Node* pDataScope,
|
| XFA_ELEMENT eMatchNodeType) {
|
| - uint32_t dwNameHash =
|
| - wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.c_str(),
|
| - wsName.GetLength());
|
| - if (dwNameHash != 0) {
|
| - for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL;
|
| - pCurDataScope &&
|
| - pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets;
|
| - pLastDataScope = pCurDataScope,
|
| - pCurDataScope =
|
| - pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) {
|
| - for (CXFA_Node* pDataChild =
|
| - pCurDataScope->GetFirstChildByName(dwNameHash);
|
| - pDataChild;
|
| - pDataChild = pDataChild->GetNextSameNameSibling(dwNameHash)) {
|
| - if (pDataChild == pLastDataScope ||
|
| - (eMatchNodeType != XFA_ELEMENT_DataModel &&
|
| - pDataChild->GetClassID() != eMatchNodeType) ||
|
| - pDataChild->HasBindItem()) {
|
| - continue;
|
| - }
|
| - return pDataChild;
|
| + if (wsName.IsEmpty())
|
| + return nullptr;
|
| +
|
| + uint32_t dwNameHash = FX_HashCode_GetW(wsName, false);
|
| + CXFA_Node* pLastDataScope = nullptr;
|
| + for (CXFA_Node* pCurDataScope = pDataScope;
|
| + pCurDataScope && pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets;
|
| + pCurDataScope = pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) {
|
| + for (CXFA_Node* pDataChild = pCurDataScope->GetFirstChildByName(dwNameHash);
|
| + pDataChild;
|
| + pDataChild = pDataChild->GetNextSameNameSibling(dwNameHash)) {
|
| + if (pDataChild == pLastDataScope || pDataChild->HasBindItem() ||
|
| + (eMatchNodeType != XFA_ELEMENT_DataModel &&
|
| + pDataChild->GetClassID() != eMatchNodeType)) {
|
| + continue;
|
| }
|
| + return pDataChild;
|
| }
|
| + pLastDataScope = pCurDataScope;
|
| }
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| +
|
| static CXFA_Node* XFA_DataMerge_FindDataRefDataNode(CXFA_Document* pDocument,
|
| CFX_WideStringC wsRef,
|
| CXFA_Node* pDataScope,
|
| @@ -561,8 +557,8 @@ static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager(
|
| CXFA_NodeArray& subforms) {
|
| CFX_WideStringC wsSubformName = pTemplateNode->GetCData(XFA_ATTRIBUTE_Name);
|
| CFX_WideString wsInstMgrNodeName = FX_WSTRC(L"_") + wsSubformName;
|
| - uint32_t dwInstNameHash = FX_HashCode_String_GetW(
|
| - wsInstMgrNodeName.c_str(), wsInstMgrNodeName.GetLength());
|
| + uint32_t dwInstNameHash =
|
| + FX_HashCode_GetW(wsInstMgrNodeName.AsStringC(), false);
|
| CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance(
|
| pDocument, XFA_ELEMENT_InstanceManager, dwInstNameHash, pFormParent);
|
| if (pExistingNode) {
|
|
|