shader: Fix use-after-free bug in object_pool
This commit is contained in:
		| @@ -18,7 +18,7 @@ public: | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     template <typename... Args> |     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)...); |         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)}; |             const size_t total_objects{root.num_objects + new_chunk_size * (chunks.size() - 1)}; | ||||||
|             chunks.clear(); |             chunks.clear(); | ||||||
|             chunks.emplace_back(total_objects); |             chunks.emplace_back(total_objects); | ||||||
|             chunks.shrink_to_fit(); |  | ||||||
|         } else { |         } else { | ||||||
|             root.Release(); |             root.Release(); | ||||||
|             chunks.resize(1); |             chunks.resize(1); | ||||||
|             chunks.shrink_to_fit(); |  | ||||||
|         } |         } | ||||||
|  |         chunks.shrink_to_fit(); | ||||||
|  |         node = &chunks.front(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| private: | private: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user