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;