Mercurial > hg
comparison mercurial/parsers.c @ 16614:1d800eb9ba52
parsers: update ntrev when we stop scanning
This prevents us from inserting some nodes twice, wasting work.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Tue, 08 May 2012 14:46:06 -0700 |
parents | b767382a8675 |
children | 96fa9dd1db38 |
comparison
equal
deleted
inserted
replaced
16613:6a7ce975edd6 | 16614:1d800eb9ba52 |
---|---|
688 } | 688 } |
689 } | 689 } |
690 } else { | 690 } else { |
691 for (rev = self->ntrev - 1; rev >= 0; rev--) { | 691 for (rev = self->ntrev - 1; rev >= 0; rev--) { |
692 const char *n = index_node(self, rev); | 692 const char *n = index_node(self, rev); |
693 if (n == NULL) | 693 if (n == NULL) { |
694 self->ntrev = rev + 1; | |
694 return -2; | 695 return -2; |
695 if (nt_insert(self, n, rev) == -1) | 696 } |
697 if (nt_insert(self, n, rev) == -1) { | |
698 self->ntrev = rev + 1; | |
696 return -3; | 699 return -3; |
700 } | |
697 if (memcmp(node, n, nodelen > 20 ? 20 : nodelen) == 0) { | 701 if (memcmp(node, n, nodelen > 20 ? 20 : nodelen) == 0) { |
698 break; | 702 break; |
699 } | 703 } |
700 } | 704 } |
701 self->ntrev = rev; | 705 self->ntrev = rev; |