Browse Source

fix a segfault when incomplete types array resizes while processing

Laytan Laats 1 năm trước cách đây
mục cha
commit
915f63b3f9
1 tập tin đã thay đổi với 3 bổ sung1 xóa
  1. 3 1
      src/llvm_backend_debug.cpp

+ 3 - 1
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);