From bb7284bb7e708792198d39cfa248467394ee5896 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Thu, 7 Aug 2014 08:38:46 +0200 Subject: common: Don't do repeated linear reallocation of array memory Some mallocs (notably on Windows) have really poor behavior when called repeatedly with a linearly growing buffer. https://bugzilla.redhat.com/show_bug.cgi?id=985419 --- common/array.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/array.c b/common/array.c index 9802100..9bff748 100644 --- a/common/array.c +++ b/common/array.c @@ -48,7 +48,10 @@ maybe_expand_array (p11_array *array, if (length <= array->allocated) return true; - new_allocated = array->allocated + 16; + + new_allocated = array->allocated * 2; + if (new_allocated == 0) + new_allocated = 16; if (new_allocated < length) new_allocated = length; -- cgit v1.2.1