D4166: index: make capacity argument to nt_init be measured in revisions
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Aug 9 07:27:50 UTC 2018
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The nodetree's internal capacity field is measures in nodetree nodes,
which is not something the caller should have to know about.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4166
AFFECTED FILES
mercurial/cext/revlog.c
CHANGE DETAILS
diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c
--- a/mercurial/cext/revlog.c
+++ b/mercurial/cext/revlog.c
@@ -1065,7 +1065,9 @@
static int nt_init(nodetree *self, indexObject *index, unsigned capacity)
{
self->index = index;
- self->capacity = capacity;
+ /* The input capacity is in terms of revisions, while the field is in
+ * terms of nodetree nodes. */
+ self->capacity = (capacity < 4 ? 4 : capacity / 2);
self->depth = 0;
self->splits = 0;
if ((size_t)self->capacity > INT_MAX / sizeof(nodetreenode)) {
@@ -1141,8 +1143,7 @@
PyErr_NoMemory();
return -1;
}
- unsigned capacity = (self->raw_length < 4 ? 4 : (int)self->raw_length / 2);
- if (nt_init(self->nt, self, capacity) == -1) {
+ if (nt_init(self->nt, self, self->raw_length) == -1) {
PyMem_Free(self->nt);
self->nt = NULL;
return -1;
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list