diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c +++ b/mercurial/cext/revlog.c @@ -991,12 +991,11 @@ if (self->length == self->capacity) { unsigned newcapacity; nodetreenode *newnodes; - if (self->capacity >= INT_MAX / (sizeof(nodetreenode) * 2)) { - PyErr_SetString(PyExc_MemoryError, - "overflow in nt_new"); + newcapacity = self->capacity * 2; + if (newcapacity >= INT_MAX / sizeof(nodetreenode)) { + PyErr_SetString(PyExc_MemoryError, "overflow in nt_new"); return -1; } - newcapacity = self->capacity * 2; newnodes = realloc(self->nodes, newcapacity * sizeof(nodetreenode)); if (newnodes == NULL) { PyErr_SetString(PyExc_MemoryError, "out of memory");