From 9fd09ddd8a3254487d0885aa13a880d85bf1fa58 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Thu, 23 May 2019 12:15:57 -0500 Subject: [PATCH] Add IdList::AllocForOneMore() based on List. NFC. Also modifies a sizeof call. --- src/dsc.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/dsc.h b/src/dsc.h index f180f42..51d6f54 100644 --- a/src/dsc.h +++ b/src/dsc.h @@ -215,7 +215,7 @@ public: void ReserveMore(int howMuch) { if(n + howMuch > elemsAllocated) { elemsAllocated = n + howMuch; - T *newElem = (T *)MemAlloc((size_t)elemsAllocated*sizeof(elem[0])); + T *newElem = (T *)MemAlloc((size_t)elemsAllocated*sizeof(T)); for(int i = 0; i < n; i++) { new(&newElem[i]) T(std::move(elem[i])); elem[i].~T(); @@ -348,6 +348,12 @@ public: return n == 0; } + void AllocForOneMore() { + if(n >= elemsAllocated) { + ReserveMore((elemsAllocated + 32)*2 - n); + } + } + uint32_t MaximumId() { if(IsEmpty()) { return 0; @@ -391,7 +397,7 @@ public: void ReserveMore(int howMuch) { if(n + howMuch > elemsAllocated) { elemsAllocated = n + howMuch; - T *newElem = (T *)MemAlloc((size_t)elemsAllocated*sizeof(elem[0])); + T *newElem = (T *)MemAlloc((size_t)elemsAllocated*sizeof(T)); for(int i = 0; i < n; i++) { new(&newElem[i]) T(std::move(elem[i])); elem[i].~T(); @@ -402,9 +408,8 @@ public: } void Add(T *t) { - if(n >= elemsAllocated) { - ReserveMore((elemsAllocated + 32)*2 - n); - } + AllocForOneMore(); + // Look to see if we already have something with the same handle value. ssassert(FindByIdNoOops(t->h) == nullptr, "Handle isn't unique");