2
0
Эх сурвалжийг харах

Merge branch 'master' into master

Kim Kulling 3 жил өмнө
parent
commit
94178df61b

+ 7 - 3
include/assimp/Hash.h

@@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
 
 
 Copyright (c) 2006-2022, assimp team
 Copyright (c) 2006-2022, assimp team
 
 
-
 All rights reserved.
 All rights reserved.
 
 
 Redistribution and use of this software in source and binary forms,
 Redistribution and use of this software in source and binary forms,
@@ -76,7 +75,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) {
 inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) {
 uint32_t tmp;
 uint32_t tmp;
 int rem;
 int rem;
-
+size_t offset;
+    
     if (!data) return 0;
     if (!data) return 0;
     if (!len)len = (uint32_t)::strlen(data);
     if (!len)len = (uint32_t)::strlen(data);
 
 
@@ -96,7 +96,11 @@ int rem;
     switch (rem) {
     switch (rem) {
         case 3: hash += get16bits (data);
         case 3: hash += get16bits (data);
                 hash ^= hash << 16;
                 hash ^= hash << 16;
-                hash ^= data[sizeof (uint16_t)] << 18;
+                offset = static_cast<size_t>(sizeof(uint16_t));
+                if (offset < 0) {
+                    return 0;
+                }
+                hash ^= data[offset] << 18;
                 hash += hash >> 11;
                 hash += hash >> 11;
                 break;
                 break;
         case 2: hash += get16bits (data);
         case 2: hash += get16bits (data);