فهرست منبع

fix a segfault when incomplete types array resizes while processing

Laytan Laats 1 سال پیش
والد
کامیت
915f63b3f9
1فایلهای تغییر یافته به همراه3 افزوده شده و 1 حذف شده
  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);