summaryrefslogtreecommitdiff
path: root/src/util/allocator.h
diff options
context:
space:
mode:
authoraura <nw@moneybot.cc>2026-08-11 19:10:16 +0200
committeraura <nw@moneybot.cc>2026-08-11 19:10:16 +0200
commit17c07b5f884453130d8be3a6d91d730d80d4f8ae (patch)
tree6ec11e5e5f7f0be9ed899196c2897aa76a907de2 /src/util/allocator.h
parent1aa17de9188790f049c0edc4281597cb4e535627 (diff)
parent0a9d7ce6a0764a87766ebb23cc1ece4c26c8c678 (diff)
Merge remote-tracking branch 'origin/day'
Diffstat (limited to 'src/util/allocator.h')
-rw-r--r--src/util/allocator.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/util/allocator.h b/src/util/allocator.h
index 63fc94a..5fc5aa6 100644
--- a/src/util/allocator.h
+++ b/src/util/allocator.h
@@ -312,14 +312,16 @@ struct LIST {
if( idx >= size )
return;
- if constexpr( !__is_trivially_destructible(T) ) {
- data[idx].~T();
- memset( &data[idx], 0, sizeof(T) );
- }
-
- for( U32 i = idx; i < size - 1; i++ )
+ for( U32 i = idx; i + 1 < size; ++i )
data[i] = data[i + 1];
+ U32 last = size - 1;
+
+ if constexpr( !__is_trivially_destructible(T) )
+ data[last].~T();
+
+ memset( &data[last], 0, sizeof(T) );
+
if( --size < capacity / 4 )
shrink();
}