[PATCH 07 of 11] parsers: use Python memory allocator for indexObject->nt

Gregory Szorc gregory.szorc at gmail.com
Thu Mar 9 16:59:15 EST 2017


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1489090290 28800
#      Thu Mar 09 12:11:30 2017 -0800
# Node ID a53adfed7bea034f87d3d603e04dd04e7b16137f
# Parent  b42943c2df62d6549bfd4ceb8f6dc16349e33528
parsers: use Python memory allocator for indexObject->nt

diff --git a/mercurial/parsers.c b/mercurial/parsers.c
--- a/mercurial/parsers.c
+++ b/mercurial/parsers.c
@@ -1020,7 +1020,7 @@ static void _index_clearcaches(indexObje
 		self->offsets = NULL;
 	}
 	if (self->nt) {
-		free(self->nt);
+		PyMem_Free(self->nt);
 		self->nt = NULL;
 	}
 	Py_CLEAR(self->headrevs);
@@ -1587,8 +1587,8 @@ static int nt_new(indexObject *self)
 			return -1;
 		}
 		self->ntcapacity *= 2;
-		self->nt = realloc(self->nt,
-				   self->ntcapacity * sizeof(nodetree));
+		self->nt = PyMem_Realloc(self->nt,
+					 self->ntcapacity * sizeof(nodetree));
 		if (self->nt == NULL) {
 			PyErr_SetString(PyExc_MemoryError, "out of memory");
 			return -1;
@@ -1654,11 +1654,14 @@ static int nt_init(indexObject *self)
 		self->ntcapacity = self->raw_length < 4
 			? 4 : (int)self->raw_length / 2;
 
-		self->nt = calloc(self->ntcapacity, sizeof(nodetree));
+		self->nt = PyMem_Malloc(self->ntcapacity * sizeof(nodetree));
 		if (self->nt == NULL) {
 			PyErr_NoMemory();
 			return -1;
 		}
+
+		memset(self->nt, 0, self->ntcapacity * sizeof(nodetree));
+
 		self->ntlength = 1;
 		self->ntrev = (int)index_length(self) - 1;
 		self->ntlookups = 1;


More information about the Mercurial-devel mailing list