mercurial/cext/revlog.c
changeset 38911 2aa4f06c1e91
parent 38868 0db50770f388
child 38912 d1bc0e7c862b
--- a/mercurial/cext/revlog.c	Fri Aug 03 14:03:31 2018 -0700
+++ b/mercurial/cext/revlog.c	Wed Jul 18 17:37:06 2018 -0700
@@ -1240,11 +1240,6 @@
 static int nt_partialmatch(indexObject *self, const char *node,
 			   Py_ssize_t nodelen)
 {
-	if (nt_init(self) == -1)
-		return -3;
-	if (nt_populate(self) == -1)
-		return -3;
-
 	return nt_find(self, node, nodelen, 1);
 }
 
@@ -1261,11 +1256,6 @@
 {
 	int level, off;
 
-	if (nt_init(self) == -1)
-		return -3;
-	if (nt_populate(self) == -1)
-		return -3;
-
 	for (level = off = 0; level < 40; level++) {
 		int k, v;
 		nodetree *n = &self->nt[off];
@@ -1327,12 +1317,15 @@
 		Py_RETURN_NONE;
 	}
 
+	if (nt_init(self) == -1)
+		return NULL;
+	if (nt_populate(self) == -1)
+		return NULL;
 	rev = nt_partialmatch(self, node, nodelen);
 
 	switch (rev) {
 	case -4:
 		raise_revlog_error();
-	case -3:
 		return NULL;
 	case -2:
 		Py_RETURN_NONE;
@@ -1359,6 +1352,10 @@
 		return NULL;
 
 	self->ntlookups++;
+	if (nt_init(self) == -1)
+		return NULL;
+	if (nt_populate(self) == -1)
+		return NULL;
 	length = nt_shortest(self, node);
 	if (length == -3)
 		return NULL;