[PATCH 05 of 11] parsers: use Python memory allocator for indexObject->cache
Gregory Szorc
gregory.szorc at gmail.com
Thu Mar 9 16:59:13 EST 2017
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1489090097 28800
# Thu Mar 09 12:08:17 2017 -0800
# Node ID 4a97eb780de33a2ddce8e25ce8d91353a7630b7b
# Parent 0c7e93c77e5a0280717ab3f0d4aaf11efa38a164
parsers: use Python memory allocator for indexObject->cache
Again, Python 2 doesn't have a calloc() equivalent. So we do a manual
memset().
diff --git a/mercurial/parsers.c b/mercurial/parsers.c
--- a/mercurial/parsers.c
+++ b/mercurial/parsers.c
@@ -882,9 +882,11 @@ static PyObject *index_get(indexObject *
return self->cache[pos];
}
} else {
- self->cache = calloc(self->raw_length, sizeof(PyObject *));
+ self->cache = PyMem_Malloc(self->raw_length * sizeof(PyObject *));
if (self->cache == NULL)
return PyErr_NoMemory();
+
+ memset(self->cache, 0, self->raw_length * sizeof(PyObject *));
}
data = index_deref(self, pos);
@@ -1010,7 +1012,7 @@ static void _index_clearcaches(indexObje
for (i = 0; i < self->raw_length; i++)
Py_CLEAR(self->cache[i]);
- free(self->cache);
+ PyMem_Free(self->cache);
self->cache = NULL;
}
if (self->offsets) {
More information about the Mercurial-devel
mailing list