diff --git a/src/xercesc/util/BaseRefVectorOf.c b/src/xercesc/util/BaseRefVectorOf.c index 49f8f01625d02783b51d1fca13e620529c488744..b7ba22a9c8cf9e96050c3f14c1813b8e82746ec7 100644 --- a/src/xercesc/util/BaseRefVectorOf.c +++ b/src/xercesc/util/BaseRefVectorOf.c @@ -267,9 +267,10 @@ ensureExtraCapacity(const unsigned int length) if (newMax <= fMaxCount) return; - // Avoid too many reallocations by providing a little more space - if (newMax < fMaxCount + 32) - newMax = fMaxCount + 32; + // Choose how much bigger based on the current size. + // This will grow half as much again. + if (newMax < fMaxCount + fMaxCount/2) + newMax = fMaxCount + fMaxCount/2; // Allocate the new array and copy over the existing stuff TElem** newList = (TElem**) fMemoryManager->allocate