[runtime] Fixed UB with signed overflow
This commit is contained in:
committed by
Vasily Levchenko
parent
c8633d8bda
commit
c12d79176a
@@ -99,7 +99,7 @@ int polyHash_arm(int length, uint16_t const* str) {
|
||||
// Vectorization is not supported.
|
||||
return polyHash_naive(length, str);
|
||||
}
|
||||
int res;
|
||||
uint32_t res;
|
||||
if (length < 488)
|
||||
res = NeonTraits::polyHashUnalignedUnrollUpTo16(length / 4, str);
|
||||
else
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <cstdint>
|
||||
|
||||
inline int polyHash_naive(int length, uint16_t const* str) {
|
||||
int res = 0;
|
||||
uint32_t res = 0;
|
||||
for (int i = 0; i < length; ++i)
|
||||
res = res * 31 + str[i];
|
||||
return res;
|
||||
|
||||
@@ -143,7 +143,7 @@ int polyHash_x86(int length, uint16_t const* str) {
|
||||
// Either vectorization is not supported or the string is too short to gain from it.
|
||||
return polyHash_naive(length, str);
|
||||
}
|
||||
int res;
|
||||
uint32_t res;
|
||||
if (length < 32)
|
||||
res = SSETraits::polyHashUnalignedUnrollUpTo8(length / 4, str);
|
||||
else if (!avx2Supported)
|
||||
|
||||
Reference in New Issue
Block a user