mercurial/parsers.c
changeset 16642 5cf18921bb7b
parent 16629 1435866c1937
parent 16641 e6dfbc5df76f
child 16663 a955e05dd7a0
--- 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;