summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/xfa_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/parser/xfa_utils.cpp')
-rw-r--r--xfa/fxfa/parser/xfa_utils.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/xfa/fxfa/parser/xfa_utils.cpp b/xfa/fxfa/parser/xfa_utils.cpp
index e9315763b7..a7b31aebec 100644
--- a/xfa/fxfa/parser/xfa_utils.cpp
+++ b/xfa/fxfa/parser/xfa_utils.cpp
@@ -190,14 +190,19 @@ const XFA_PACKETINFO* XFA_GetPacketByIndex(XFA_PacketType ePacket) {
return g_XFAPacketData + static_cast<uint8_t>(ePacket);
}
-const XFA_PACKETINFO* XFA_GetPacketByID(uint32_t dwPacket) {
- int32_t iStart = 0, iEnd = g_iXFAPacketCount - 1;
+const XFA_PACKETINFO* XFA_GetPacketByName(const WideStringView& wsName) {
+ if (wsName.IsEmpty())
+ return nullptr;
+
+ uint32_t uHash = FX_HashCode_GetW(wsName, false);
+ int32_t iStart = 0;
+ int32_t iEnd = g_iXFAPacketCount - 1;
do {
int32_t iMid = (iStart + iEnd) / 2;
- uint32_t dwFind = (g_XFAPacketData + iMid)->eName;
- if (dwPacket == dwFind)
- return g_XFAPacketData + iMid;
- if (dwPacket < dwFind)
+ const XFA_PACKETINFO* pInfo = g_XFAPacketData + iMid;
+ if (uHash == pInfo->uHash)
+ return pInfo;
+ if (uHash < pInfo->uHash)
iEnd = iMid - 1;
else
iStart = iMid + 1;