summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/object_pool.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/object_pool.h')
-rw-r--r--src/shader_recompiler/object_pool.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/shader_recompiler/object_pool.h b/src/shader_recompiler/object_pool.h
index 7c65bbd92..a573add32 100644
--- a/src/shader_recompiler/object_pool.h
+++ b/src/shader_recompiler/object_pool.h
@@ -6,6 +6,7 @@
#include <memory>
#include <type_traits>
+#include <utility>
namespace Shader {
@@ -31,14 +32,12 @@ public:
void ReleaseContents() {
Chunk* chunk{&root};
- if (chunk) {
- const size_t free_objects{chunk->free_objects};
- if (free_objects == chunk_size) {
+ while (chunk) {
+ if (chunk->free_objects == chunk_size) {
break;
}
- chunk->free_objects = chunk_size;
- for (size_t obj_id = free_objects; obj_id < chunk_size; ++obj_id) {
- chunk->storage[obj_id].object.~T();
+ for (; chunk->free_objects < chunk_size; ++chunk->free_objects) {
+ chunk->storage[chunk->free_objects].object.~T();
}
chunk = chunk->next.get();
}