diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-03-29 22:42:12 +0100 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-03-29 22:42:12 +0100 |
| commit | 915f63b3f92bc17e4a5875623f46e167dcd17322 (patch) | |
| tree | a9d727067dcc649b3c76ab8eb9a069cf60acd195 /src/llvm_backend_debug.cpp | |
| parent | d325c8ad23222f04d520e1c13fc45fea391587c1 (diff) | |
fix a segfault when incomplete types array resizes while processing
Diffstat (limited to 'src/llvm_backend_debug.cpp')
| -rw-r--r-- | src/llvm_backend_debug.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index c06026568..9ecacb4f4 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -652,7 +652,9 @@ gb_internal void lb_debug_complete_types(lbModule *m) { for_array(debug_incomplete_type_index, m->debug_incomplete_types) { TEMPORARY_ALLOCATOR_GUARD(); - auto const &idt = m->debug_incomplete_types[debug_incomplete_type_index]; + // NOTE(laytan): don't make this a pointer, the array could resize while in this iteration + // and cause a use-after-free at the end. + auto const idt = m->debug_incomplete_types[debug_incomplete_type_index]; GB_ASSERT(idt.type != nullptr); GB_ASSERT(idt.metadata != nullptr); |