From 1d2db783986717c912709ccea4a18d9b8f396ee1 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Tue, 23 Mar 2021 22:07:14 -0300
Subject: [PATCH] shader: Fix use-after-free bug in object_pool

---
 src/shader_recompiler/object_pool.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/shader_recompiler/object_pool.h b/src/shader_recompiler/object_pool.h
index c10751b9d..424281634 100644
--- a/src/shader_recompiler/object_pool.h
+++ b/src/shader_recompiler/object_pool.h
@@ -18,7 +18,7 @@ public:
     }
 
     template <typename... Args>
-    requires std::is_constructible_v<T, Args...>[[nodiscard]] T* Create(Args&&... args) {
+    requires std::is_constructible_v<T, Args...> [[nodiscard]] T* Create(Args&&... args) {
         return std::construct_at(Memory(), std::forward<Args>(args)...);
     }
 
@@ -32,12 +32,12 @@ public:
             const size_t total_objects{root.num_objects + new_chunk_size * (chunks.size() - 1)};
             chunks.clear();
             chunks.emplace_back(total_objects);
-            chunks.shrink_to_fit();
         } else {
             root.Release();
             chunks.resize(1);
-            chunks.shrink_to_fit();
         }
+        chunks.shrink_to_fit();
+        node = &chunks.front();
     }
 
 private: