[PATCH 1 of 8] parsers: update ntrev when we stop scanning

Bryan O'Sullivan bos at serpentine.com
Tue May 8 17:00:04 CDT 2012


# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1336513566 25200
# Node ID 5c92ffc646491a50fda8affad2a79b8f369f203a
# Parent  852d9d87a0cdb977da9f5731bc978e72e9d19232
parsers: update ntrev when we stop scanning

This prevents us from inserting some nodes twice, wasting work.

diff -r 852d9d87a0cd -r 5c92ffc64649 mercurial/parsers.c
--- a/mercurial/parsers.c	Tue May 08 14:46:04 2012 -0700
+++ b/mercurial/parsers.c	Tue May 08 14:46:06 2012 -0700
@@ -692,10 +692,14 @@
 	} else {
 		for (rev = self->ntrev - 1; rev >= 0; rev--) {
 			const char *n = index_node(self, rev);
-			if (n == NULL)
+			if (n == NULL) {
+				self->ntrev = rev + 1;
 				return -2;
-			if (nt_insert(self, n, rev) == -1)
+			}
+			if (nt_insert(self, n, rev) == -1) {
+				self->ntrev = rev + 1;
 				return -3;
+			}
 			if (memcmp(node, n, nodelen > 20 ? 20 : nodelen) == 0) {
 				break;
 			}


More information about the Mercurial-devel mailing list