Chromium Code Reviews| 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..436eac29d1e94711981844989f027b6dd63eab8b 100644 |
| --- a/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp |
| +++ b/xfa/fxfa/parser/xfa_document_datamerger_imp.cpp |
| @@ -397,52 +397,49 @@ 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); |
| + for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL; |
|
Lei Zhang
2016/04/23 01:33:29
My eyes!
Tom Sepez
2016/04/25 16:50:21
Made slightly better with both for-loops having on
|
| + 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; |
| } |
| } |
| - return NULL; |
| + return nullptr; |
| } |
| + |
| static CXFA_Node* XFA_DataMerge_FindDataRefDataNode(CXFA_Document* pDocument, |
| CFX_WideStringC wsRef, |
| CXFA_Node* pDataScope, |
| @@ -561,8 +558,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) { |