diff options
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/xfa_basic_imp.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/xfa/fxfa/parser/xfa_basic_imp.cpp b/xfa/fxfa/parser/xfa_basic_imp.cpp index 759d530439..8f53b57467 100644 --- a/xfa/fxfa/parser/xfa_basic_imp.cpp +++ b/xfa/fxfa/parser/xfa_basic_imp.cpp @@ -7,7 +7,6 @@ #include "xfa/fxfa/parser/xfa_basic_imp.h" #include "core/fxcrt/include/fx_ext.h" -#include "xfa/fgas/crt/fgas_algorithm.h" #include "xfa/fgas/crt/fgas_codepage.h" #include "xfa/fgas/crt/fgas_system.h" #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" @@ -215,24 +214,23 @@ const uint8_t* XFA_GetElementAttributes(XFA_ELEMENT eElement, int32_t& iCount) { iCount = pElement->wCount; return g_XFAElementAttributeData + pElement->wStart; } + const XFA_ATTRIBUTEINFO* XFA_GetAttributeOfElement(XFA_ELEMENT eElement, XFA_ATTRIBUTE eAttribute, uint32_t dwPacket) { int32_t iCount = 0; const uint8_t* pAttr = XFA_GetElementAttributes(eElement, iCount); - if (pAttr == NULL || iCount < 1) { - return NULL; - } - CFX_DSPATemplate<uint8_t> search; - int32_t index = search.Lookup(eAttribute, pAttr, iCount); - if (index < 0) { - return NULL; - } + if (!pAttr || iCount < 1) + return nullptr; + + if (!std::binary_search(pAttr, pAttr + iCount, eAttribute)) + return nullptr; + const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttribute); ASSERT(pInfo); if (dwPacket == XFA_XDPPACKET_UNKNOWN) return pInfo; - return (dwPacket & pInfo->dwPackets) ? pInfo : NULL; + return (dwPacket & pInfo->dwPackets) ? pInfo : nullptr; } const XFA_PROPERTY* XFA_GetElementProperties(XFA_ELEMENT eElement, |