summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2015-12-29 01:35:46 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-01-04 09:51:16 -0800
commit9a93c6686f56086fe5280a85513041bbfebf41d0 (patch)
tree7e8ceeeb6f3e52f99e94e968145f5cf46d508080 /builtin
parentMerge branch 'sg/lock-file-commit-error' into maint (diff)
downloadtgif-9a93c6686f56086fe5280a85513041bbfebf41d0.tar.xz
avoid shifting signed integers 31 bits
We sometimes use 32-bit unsigned integers as bit-fields. It's fine to access the MSB, because it's unsigned. However, doing so as "1 << 31" is wrong, because the constant "1" is a signed int, and we shift into the sign bit, causing undefined behavior. We can fix this by using "1U" as the constant. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/receive-pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index e6b93d0264..e35ed40437 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1597,7 +1597,7 @@ static void prepare_shallow_update(struct command *commands,
continue;
si->need_reachability_test[i]++;
for (k = 0; k < 32; k++)
- if (si->used_shallow[i][j] & (1 << k))
+ if (si->used_shallow[i][j] & (1U << k))
si->shallow_ref[j * 32 + k]++;
}