#include #include extern void _avector_ensure( void** items, size_t itemSize, unsigned* pMaxItems, unsigned newCount ) { unsigned oldMax = *pMaxItems; if (newCount > oldMax) { unsigned newMax = oldMax; unsigned bigMax = UINT_MAX / itemSize; if (itemSize == 0) { AASSERT_FAIL("trying to reallocate array of 0-size items (count=%d)\n", newCount); } if (newCount > bigMax) { AASSERT_FAIL("trying to reallocate over-sized array of %d-bytes items (%d > %d)\n", itemSize, newCount, bigMax); } while (newMax < newCount) { unsigned newMax2 = newMax + (newMax >> 1) + 4; if (newMax2 < newMax || newMax2 > bigMax) newMax2 = bigMax; newMax = newMax2; } *items = _android_array_realloc( *items, itemSize, newMax ); *pMaxItems = newMax; } }