D4107: index: make "nt_*" functions work on an initialized nodetree

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Mon Aug 6 09:13:16 EDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG2aa4f06c1e91: index: make "nt_*" functions work on an initialized nodetree (authored by martinvonz, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D4107?vs=9910&id=9971

REVISION DETAIL
  https://phab.mercurial-scm.org/D4107

AFFECTED FILES
  mercurial/cext/revlog.c

CHANGE DETAILS

diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c
--- a/mercurial/cext/revlog.c
+++ b/mercurial/cext/revlog.c
@@ -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;



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list