ancestors: remove unnecessary handling of 'left'
If one of the initial nodes also is an ancestor then that most be the only
ancestor. There is no need for additional bookkeeping.
--- a/mercurial/ancestor.py Mon Feb 24 22:42:13 2014 +0100
+++ b/mercurial/ancestor.py Mon Feb 24 22:42:13 2014 +0100
@@ -31,7 +31,7 @@
poison = 1 << (i + 1)
gca = set()
- interesting = left = len(nodes)
+ interesting = len(nodes)
nv = len(seen) - 1
while nv >= 0 and interesting:
v = nv
@@ -45,10 +45,8 @@
gca.add(v)
sv |= poison
if v in nodes:
- left -= 1
- if left <= 1:
- # history is linear
- return set([v])
+ # history is linear
+ return set([v])
if sv < poison:
for p in pfunc(v):
sp = seen[p]
--- a/mercurial/parsers.c Mon Feb 24 22:42:13 2014 +0100
+++ b/mercurial/parsers.c Mon Feb 24 22:42:13 2014 +0100
@@ -1208,7 +1208,7 @@
const bitmask allseen = (1ull << revcount) - 1;
const bitmask poison = 1ull << revcount;
PyObject *gca = PyList_New(0);
- int i, v, interesting, left;
+ int i, v, interesting;
int maxrev = -1;
long sp;
bitmask *seen;
@@ -1230,7 +1230,7 @@
for (i = 0; i < revcount; i++)
seen[revs[i]] = 1ull << i;
- interesting = left = revcount;
+ interesting = revcount;
for (v = maxrev; v >= 0 && interesting; v--) {
long sv = seen[v];
@@ -1251,11 +1251,8 @@
}
sv |= poison;
for (i = 0; i < revcount; i++) {
- if (revs[i] == v) {
- if (--left <= 1)
- goto done;
- break;
- }
+ if (revs[i] == v)
+ goto done;
}
}
}