From b3ef77e9dd93bd0c10fa543f67bc26fe1050cf75 Mon Sep 17 00:00:00 2001 From: Morgan Date: Mon, 1 Dec 2025 16:24:57 +0100 Subject: [PATCH 1/2] 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/2] 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) {