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.
This commit is contained in:
Wei, Elson 2013-07-25 17:35:53 +08:00
parent 2267993ebc
commit ec2b8c873f

View File

@ -1362,10 +1362,10 @@ static PyObject *find_deepest(indexObject *self, PyObject *revs)
if (nsp == sp)
continue;
seen[p] = nsp;
interesting[nsp] += 1;
interesting[sp] -= 1;
if (interesting[sp] == 0)
if (interesting[sp] == 0 && interesting[nsp] > 0)
ninteresting -= 1;
interesting[nsp] += 1;
}
}
interesting[sv] -= 1;