stb_ds.h: fix implicit casts to int, resulting in bogus bitshift

This commit is contained in:
veclavtalica 2025-03-01 12:15:41 +03:00
parent 2f6f7852be
commit 80db96672d

View File

@ -1079,8 +1079,8 @@ static size_t stbds_siphash_bytes(void *p, size_t len, size_t seed)
} while (0) } while (0)
for (i=0; i+sizeof(size_t) <= len; i += sizeof(size_t), d += sizeof(size_t)) { for (i=0; i+sizeof(size_t) <= len; i += sizeof(size_t), d += sizeof(size_t)) {
data = d[0] | (d[1] << 8) | (d[2] << 16) | (d[3] << 24); data = d[0] | (d[1] << 8) | (d[2] << 16) | ((size_t) d[3] << 24);
data |= (size_t) (d[4] | (d[5] << 8) | (d[6] << 16) | (d[7] << 24)) << 16 << 16; // discarded if size_t == 4 data |= (size_t) (d[4] | (d[5] << 8) | (d[6] << 16) | ((size_t) d[7] << 24)) << 16 << 16; // discarded if size_t == 4
v3 ^= data; v3 ^= data;
for (j=0; j < STBDS_SIPHASH_C_ROUNDS; ++j) for (j=0; j < STBDS_SIPHASH_C_ROUNDS; ++j)
@ -1092,10 +1092,10 @@ static size_t stbds_siphash_bytes(void *p, size_t len, size_t seed)
case 7: data |= ((size_t) d[6] << 24) << 24; // fall through case 7: data |= ((size_t) d[6] << 24) << 24; // fall through
case 6: data |= ((size_t) d[5] << 20) << 20; // fall through case 6: data |= ((size_t) d[5] << 20) << 20; // fall through
case 5: data |= ((size_t) d[4] << 16) << 16; // fall through case 5: data |= ((size_t) d[4] << 16) << 16; // fall through
case 4: data |= (d[3] << 24); // fall through case 4: data |= ((size_t) d[3] << 24); // fall through
case 3: data |= (d[2] << 16); // fall through case 3: data |= ((size_t) d[2] << 16); // fall through
case 2: data |= (d[1] << 8); // fall through case 2: data |= ((size_t) d[1] << 8); // fall through
case 1: data |= d[0]; // fall through case 1: data |= (size_t) d[0]; // fall through
case 0: break; case 0: break;
} }
v3 ^= data; v3 ^= data;