From b3ef77e9dd93bd0c10fa543f67bc26fe1050cf75 Mon Sep 17 00:00:00 2001 From: Morgan Date: Mon, 1 Dec 2025 16:24:57 +0100 Subject: [PATCH 1/4] undetected type declaration cycles work-around --- src/types.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/types.cpp b/src/types.cpp index eb20b8edf..0db2fe8aa 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -4278,6 +4278,9 @@ gb_internal i64 *type_set_offsets_of(Slice const &fields, bool is_pack gb_internal bool type_set_offsets(Type *t) { t = base_type(t); if (t->kind == Type_Struct) { + if (t->Struct.are_offsets_being_processed.load()) { + return true + } MUTEX_GUARD(&t->Struct.offset_mutex); if (!t->Struct.are_offsets_set) { t->Struct.are_offsets_being_processed.store(true); From 555081240b9ed90f7ccb321a13d49dee9fb15532 Mon Sep 17 00:00:00 2001 From: Morgan Date: Mon, 1 Dec 2025 16:43:52 +0100 Subject: [PATCH 2/4] missed a semicolon --- src/types.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types.cpp b/src/types.cpp index 0db2fe8aa..18e3b56ac 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -4279,7 +4279,7 @@ gb_internal bool type_set_offsets(Type *t) { t = base_type(t); if (t->kind == Type_Struct) { if (t->Struct.are_offsets_being_processed.load()) { - return true + return true; } MUTEX_GUARD(&t->Struct.offset_mutex); if (!t->Struct.are_offsets_set) { From 739bffac0c2d9827c84f0a13c7d8c93a3ed5d742 Mon Sep 17 00:00:00 2001 From: RobinsAviary Date: Fri, 5 Dec 2025 15:16:45 -0500 Subject: [PATCH 3/4] Use multi-pointer so you can pass array --- vendor/sdl2/sdl_messagebox.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sdl2/sdl_messagebox.odin b/vendor/sdl2/sdl_messagebox.odin index edd8422e0..5211affd8 100644 --- a/vendor/sdl2/sdl_messagebox.odin +++ b/vendor/sdl2/sdl_messagebox.odin @@ -66,7 +66,7 @@ MessageBoxData :: struct { message: cstring, /**< UTF-8 message text */ numbuttons: c.int, - buttons: ^MessageBoxButtonData, + buttons: [^]MessageBoxButtonData, colorScheme: ^MessageBoxColorScheme, /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ } From 1ed1fefc27a0041b669c85174db9d273ea54ac24 Mon Sep 17 00:00:00 2001 From: DuchGhast Date: Mon, 8 Dec 2025 17:30:52 +0000 Subject: [PATCH 4/4] Fix default temp allocator under flow bug --- base/runtime/default_temp_allocator_arena.odin | 1 + 1 file changed, 1 insertion(+) diff --git a/base/runtime/default_temp_allocator_arena.odin b/base/runtime/default_temp_allocator_arena.odin index 8f4821b4a..eafaf9fbe 100644 --- a/base/runtime/default_temp_allocator_arena.odin +++ b/base/runtime/default_temp_allocator_arena.odin @@ -235,6 +235,7 @@ arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, if start < old_end && old_end == block.used && new_end <= block.capacity { // grow data in-place, adjusting next allocation block.used = uint(new_end) + arena.total_used = uint(new_end) data = block.base[start:new_end] // sanitizer.address_unpoison(data) return