object-file: use unsigned arithmetic with bit mask
33f379eee6
(make object_directory.loose_objects_subdir_seen a bitmap,
2021-07-07) replaced a wasteful 256-byte array with a 32-byte array
and bit operations. The mask calculation shifts a literal 1 of type
int left by anything between 0 and 31. UndefinedBehaviorSanitizer
doesn't like that and reports:
object-file.c:2477:18: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
Make sure to use an unsigned 1 instead to avoid the issue.
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
dd3c8a72a2
commit
581a3bb155
@ -2463,7 +2463,7 @@ struct oidtree *odb_loose_cache(struct object_directory *odb,
|
|||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
size_t word_bits = bitsizeof(odb->loose_objects_subdir_seen[0]);
|
size_t word_bits = bitsizeof(odb->loose_objects_subdir_seen[0]);
|
||||||
size_t word_index = subdir_nr / word_bits;
|
size_t word_index = subdir_nr / word_bits;
|
||||||
size_t mask = 1 << (subdir_nr % word_bits);
|
size_t mask = 1u << (subdir_nr % word_bits);
|
||||||
uint32_t *bitmap;
|
uint32_t *bitmap;
|
||||||
|
|
||||||
if (subdir_nr < 0 ||
|
if (subdir_nr < 0 ||
|
||||||
|
Loading…
Reference in New Issue
Block a user