# HG changeset patch # User Martin von Zweigbergk # Date 1533796910 25200 # Node ID 06ff7ea4f44019f51277ad82d9a8999c1f4eee48 # Parent 4dd92a15fcca1a02a75f55105e4da0dceedecf07 index: avoid duplicating capacity-growth expression We were duplicating the "*2" instead of reusing it. It's overflow-safe to reuse as long as the growth factor (i.e. currently 2) is not larger than sizeof(nodetreenode) (currently 64 or 128). Differential Revision: https://phab.mercurial-scm.org/D4165 diff -r 4dd92a15fcca -r 06ff7ea4f440 mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c Wed Aug 08 23:36:15 2018 -0700 +++ b/mercurial/cext/revlog.c Wed Aug 08 23:41:50 2018 -0700 @@ -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");