From c9a351971071ec5153073843adfd233764c81385 Mon Sep 17 00:00:00 2001 From: Anders Elfgren Date: Sun, 13 Oct 2024 11:02:38 +0200 Subject: [PATCH] Fixed crash due to accessing dealloced memory in class_info. --- src/Transpiler.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Transpiler.zig b/src/Transpiler.zig index 3f00f0d..f711dcf 100644 --- a/src/Transpiler.zig +++ b/src/Transpiler.zig @@ -559,7 +559,9 @@ fn visitCXXRecordDecl(self: *Self, value: *const json.Value) !void { name = v.string; } else if (self.scope.tag == .class) { is_generated_name = true; - name = try fmt.allocPrint(self.allocator, "__{s}{d}", .{ + // NOTE: Not certain this needs to survive forever but it's not much memory in the grand scope + // so using the global arena is fast and simple. + name = try fmt.allocPrint(self.arena.allocator(), "__{s}{d}", .{ if (is_union) "Union" else "Struct", self.scope.fields, }); @@ -570,7 +572,6 @@ fn visitCXXRecordDecl(self: *Self, value: *const json.Value) !void { _ = try self.namespace.unnamed_nodes.put(id, value.*); return; } - defer if (is_generated_name) self.allocator.free(name); const inner = value.object.getPtr("inner"); if (inner == null) {