ancestor.deepest: decrement ninteresting correctly (
issue3984)
The invariant this code tries to hold is that ninteresting is the number of
non-zero elements in the interesting array. interesting[nsp] is incremented at
the same time as interesting[sp] is decremented. So if interesting[nsp] was
previously 0, ninteresting shouldn't be decremented.
--- a/mercurial/parsers.c Thu Jul 25 14:20:37 2013 -0700
+++ b/mercurial/parsers.c Thu Jul 25 17:35:53 2013 +0800
@@ -1362,10 +1362,10 @@
if (nsp == sp)
continue;
seen[p] = nsp;
+ interesting[sp] -= 1;
+ if (interesting[sp] == 0 && interesting[nsp] > 0)
+ ninteresting -= 1;
interesting[nsp] += 1;
- interesting[sp] -= 1;
- if (interesting[sp] == 0)
- ninteresting -= 1;
}
}
interesting[sv] -= 1;