mercurial/cext/revlog.c
changeset 33475 f501322512b6
parent 33174 f4f52bb362e6
child 33758 0f4ac3b6dee4
--- a/mercurial/cext/revlog.c	Fri Jun 30 03:45:57 2017 +0200
+++ b/mercurial/cext/revlog.c	Fri Jul 14 13:48:17 2017 +0200
@@ -1464,7 +1464,7 @@
 		goto bail;
 	}
 
-	interesting = calloc(sizeof(*interesting), 2 << revcount);
+	interesting = calloc(sizeof(*interesting), 1 << revcount);
 	if (interesting == NULL) {
 		PyErr_NoMemory();
 		goto bail;
@@ -1481,6 +1481,8 @@
 		interesting[b] = 1;
 	}
 
+	/* invariant: ninteresting is the number of non-zero entries in
+	 * interesting. */
 	ninteresting = (int)revcount;
 
 	for (v = maxrev; v >= 0 && ninteresting > 1; v--) {
@@ -1523,8 +1525,10 @@
 					continue;
 				seen[p] = nsp;
 				interesting[sp] -= 1;
-				if (interesting[sp] == 0 && interesting[nsp] > 0)
+				if (interesting[sp] == 0)
 					ninteresting -= 1;
+				if (interesting[nsp] == 0)
+					ninteresting += 1;
 				interesting[nsp] += 1;
 			}
 		}