From 6afb9753b199a925b4cf1fb22dc4a4e793a8b4d0 Mon Sep 17 00:00:00 2001 From: cxl Date: Tue, 2 Jun 2020 08:08:49 +0000 Subject: [PATCH] Core: Fix in String hashing git-svn-id: svn://ultimatepp.org/upp/trunk@14536 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/String.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/uppsrc/Core/String.cpp b/uppsrc/Core/String.cpp index fc7b919d9..72c50041e 100644 --- a/uppsrc/Core/String.cpp +++ b/uppsrc/Core/String.cpp @@ -56,11 +56,19 @@ hash_t String0::LHashValue() const { int l = LLen(); if(l < 15) { // must be the same as small hash - dword w[4]; - w[0] = w[1] = w[2] = w[3] = 0; - memcpy8((char *)w, ptr, l); - ((byte *)w)[SLEN] = l; - return CombineHash(w[0], w[1], w[2], w[3]); +#ifdef HASH64 + qword m[2]; + m[0] = m[1] = 0; + memcpy8((char *)m, ptr, l); + ((byte *)m)[SLEN] = l; + return CombineHash(m[0], m[1]); +#else + dword m[4]; + m[0] = m[1] = m[2] = m[3] = 0; + memcpy8((char *)m, ptr, l); + ((byte *)m)[SLEN] = l; + return CombineHash(m[0], m[1], m[2], m[3]); +#endif } return memhash(ptr, l); }