aboutsummaryrefslogtreecommitdiff
path: root/sha1_name.c
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2016-11-01 09:49:07 +0100
committerJunio C Hamano <gitster@pobox.com>2016-11-01 10:56:39 -0700
commit3e98919a188e36f34c1a20e23ecf2ff1f5da75c9 (patch)
tree05b5ca11379495d3dd7dbd92ce2a725895da6c57 /sha1_name.c
parent4f03666ac69ec4799998f010d04916c12e38edf8 (diff)
downloadgit-3e98919a188e36f34c1a20e23ecf2ff1f5da75c9.tar.gz
git-3e98919a188e36f34c1a20e23ecf2ff1f5da75c9.tar.xz
sha1_name: make wraparound of the index into ring-buffer explicit
Overflow is defined for unsigned integers, but not for signed ones. Wrap around explicitly for the new ring-buffer in find_unique_abbrev() as we did in bb84735c for the ones in sha1_to_hex() and get_pathname(), thus avoiding signed overflows and getting rid of the magic number 3. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sha1_name.c')
-rw-r--r--sha1_name.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sha1_name.c b/sha1_name.c
index 36ce9b9f4..45aa26b32 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -474,7 +474,8 @@ const char *find_unique_abbrev(const unsigned char *sha1, int len)
{
static int bufno;
static char hexbuffer[4][GIT_SHA1_HEXSZ + 1];
- char *hex = hexbuffer[3 & ++bufno];
+ char *hex = hexbuffer[bufno];
+ bufno = (bufno + 1) % ARRAY_SIZE(hexbuffer);
find_unique_abbrev_r(hex, sha1, len);
return hex;
}