Mercurial > public > mercurial-scm > hg
diff mercurial/parsers.c @ 16642:5cf18921bb7b
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 12 May 2012 00:06:11 +0200 |
parents | 1435866c1937 e6dfbc5df76f |
children | a955e05dd7a0 |
line wrap: on
line diff
--- a/mercurial/parsers.c Wed May 09 09:58:50 2012 +0200 +++ b/mercurial/parsers.c Sat May 12 00:06:11 2012 +0200 @@ -555,7 +555,7 @@ */ static int nt_find(indexObject *self, const char *node, Py_ssize_t nodelen) { - int level, off; + int level, maxlevel, off; if (nodelen == 20 && node[0] == '\0' && memcmp(node, nullid, 20) == 0) return -1; @@ -563,7 +563,9 @@ if (self->nt == NULL) return -2; - for (level = off = 0; level < nodelen; level++) { + maxlevel = nodelen > 20 ? 40 : ((int)nodelen * 2); + + for (level = off = 0; level < maxlevel; level++) { int k = nt_level(node, level); nodetree *n = &self->nt[off]; int v = n->children[k]; @@ -606,7 +608,7 @@ int level = 0; int off = 0; - while (level < 20) { + while (level < 40) { int k = nt_level(node, level); nodetree *n; int v;