diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c +++ b/mercurial/cext/revlog.c @@ -1075,10 +1075,6 @@ static int nt_init(nodetree *self, index return -1; } self->length = 1; - if (nt_insert(self, nullid, -1) == -1) { - free(self->nodes); - return -1; - } return 0; } @@ -1152,6 +1148,11 @@ static int index_init_nt(indexObject *se self->nt = NULL; return -1; } + if (nt_insert(self->nt, nullid, -1) == -1) { + PyMem_Free(self->nt); + self->nt = NULL; + return -1; + } self->ntrev = (int)index_length(self); self->ntlookups = 1; self->ntmisses = 0; diff --git a/tests/test-revisions.t b/tests/test-revisions.t --- a/tests/test-revisions.t +++ b/tests/test-revisions.t @@ -3,7 +3,7 @@ $ echo 0 > a $ hg ci -qAm 0 - $ for i in 5 8 14 43; do + $ for i in 5 8 14 43 167; do > hg up -q 0 > echo $i > a > hg ci -qm $i @@ -14,6 +14,7 @@ > EOF $ hg l + 5:00f 4:7ba5d 3:7ba57 2:72 @@ -21,9 +22,10 @@ 0:b $ cat <> .hg/hgrc > [experimental] - > revisions.disambiguatewithin=:3 + > revisions.disambiguatewithin=not 4 > EOF $ hg l + 5:0 4:7ba5d 3:7b 2:72