diff --git a/sha1_name.c b/sha1_name.c
index 36ce9b9f45..45aa26b322 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;
 }