# HG changeset patch # User vnorilo # Date 1669119694 -7200 # Tue Nov 22 14:21:34 2022 +0200 # Branch dev # Node ID 62fe7c885dd8c9c12f9d45bd8faf4c35e88aa778 # Parent ca930c5ef2f74586b7a152d78d87af41d4cd3ee6 Fix deep recursion in C++ header type reification diff --git a/src/backends/LLVMModule.h b/src/backends/LLVMModule.h --- a/src/backends/LLVMModule.h +++ b/src/backends/LLVMModule.h @@ -168,8 +168,13 @@ else if (type.IsInt32()) list.emplace_back("int32_t"); else if (type.IsInt64()) list.emplace_back("int64_t"); else if (type.IsPair()) { - GenerateMembers(type.First(), list); - GenerateMembers(type.Rest(), list); + Type current = type; + while(current.IsPair()) { + GenerateMembers(current.First(), list); + current = current.Rest(); + } + GenerateMembers(current, list); + } else if (type.IsUserType()) { GenerateMembers(type.UnwrapUserType(), list); } else if (type.IsNativeVector()) {