As reported in GH #3104, there remained a place where (1 << shift was
used to set or remove bits from uint64_t users bitfield. It is incorrect
and could lead to bugs for values > 32 bits.
Instead, let's use 1ULL to ensure the operation remains 64bits consistent.
No backport needed.
free = 1; // consider all users are inactive for now
while (slot < sizeof(shm_stats_file_hdr->slots) / sizeof(shm_stats_file_hdr->slots[0])) {
- if ((users & (1 << slot)) &&
+ if ((users & (1ULL << slot)) &&
!shm_stats_file_slot_isfree(shm_stats_file_hdr, slot)) {
/* user still alive, so supposedly making use of it */
free = 0;