diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c +++ b/mercurial/cext/revlog.c @@ -1095,6 +1095,12 @@ return -1; } +static int nt_delete_node(indexObject *self, const char *node) +{ + /* rev==-1 happens to get encoded as 0, which is interpreted as not set */ + return nt_insert(self, node, -1); +} + static int nt_init(indexObject *self) { if (self->nt == NULL) { @@ -1795,7 +1801,7 @@ PyObject *tuple = PyList_GET_ITEM(self->added, i); PyObject *node = PyTuple_GET_ITEM(tuple, 7); - nt_insert(self, PyBytes_AS_STRING(node), -1); + nt_delete_node(self, PyBytes_AS_STRING(node)); } if (start == 0) @@ -1854,7 +1860,7 @@ if (node == NULL) return -1; - nt_insert(self, node, -1); + nt_delete_node(self, node); } if (self->added) nt_invalidate_added(self, 0); @@ -1907,7 +1913,7 @@ return -1; if (value == NULL) - return self->nt ? nt_insert(self, node, -1) : 0; + return self->nt ? nt_delete_node(self, node) : 0; rev = PyInt_AsLong(value); if (rev > INT_MAX || rev < 0) { if (!PyErr_Occurred())