status_t DynamicThreadVector::_ResizeVector(unsigned minimumSize) { static const unsigned kInitialSize = 4; unsigned size = std::max(minimumSize, kInitialSize); unsigned oldSize = _Size(); if (size <= oldSize) return B_OK; void* newVector = realloc(*fVector, (size + 1) * sizeof(TLSBlock)); if (newVector == NULL) return B_NO_MEMORY; *fVector = (TLSBlock*)newVector; memset(*fVector + oldSize + 1, 0, (size - oldSize) * sizeof(TLSBlock)); if (fGeneration == NULL) { fGeneration = new Generation; if (fGeneration == NULL) return B_NO_MEMORY; } *(Generation**)*fVector = fGeneration; fGeneration->SetSize(size); return B_OK; }