From 131b328c10abde0193c13073b5ab82f0031fb121 Mon Sep 17 00:00:00 2001 From: Tw Date: Wed, 26 Apr 2023 17:21:56 +0800 Subject: [PATCH] translate-c: deduplicate global declaration Fix #15456 Signed-off-by: Tw --- src/translate_c.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/translate_c.zig b/src/translate_c.zig index 920da77cfd..7ad58329df 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -4195,8 +4195,11 @@ fn maybeSuppressResult(c: *Context, used: ResultUsed, result: Node) TransError!N } fn addTopLevelDecl(c: *Context, name: []const u8, decl_node: Node) !void { - try c.global_scope.sym_table.put(name, decl_node); - try c.global_scope.nodes.append(decl_node); + const gop = try c.global_scope.sym_table.getOrPut(name); + if (!gop.found_existing) { + gop.value_ptr.* = decl_node; + try c.global_scope.nodes.append(decl_node); + } } fn transQualTypeInitializedStringLiteral(c: *Context, elem_ty: Node, string_lit: *const clang.StringLiteral) TypeError!Node {