zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3fccc0747903f0726d6cc8ee73832cb62f1304bb (tree)
parent f68d8060ec2c65e3062007348c0e331ffbe86f37
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Mon, 27 May 2019 20:22:15 -0400

self-hosted translate-c: fix bad memory arena references

Diffstat:
Msrc-self-hosted/translate_c.zig | 28++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig @@ -151,10 +151,21 @@ pub fn translate( var tree_arena = std.heap.ArenaAllocator.init(backing_allocator); errdefer tree_arena.deinit(); - var arena = &tree_arena.allocator; - const root_node = try arena.create(ast.Node.Root); - root_node.* = ast.Node.Root{ + const tree = try tree_arena.allocator.create(ast.Tree); + tree.* = ast.Tree{ + .source = undefined, // need to use Buffer.toOwnedSlice later + .root_node = undefined, + .arena_allocator = tree_arena, + .tokens = undefined, // can't reference the allocator yet + .errors = undefined, // can't reference the allocator yet + }; + const arena = &tree.arena_allocator.allocator; // now we can reference the allocator + tree.tokens = ast.Tree.TokenList.init(arena); + tree.errors = ast.Tree.ErrorList.init(arena); + + tree.root_node = try arena.create(ast.Node.Root); + tree.root_node.* = ast.Node.Root{ .base = ast.Node{ .id = ast.Node.Id.Root }, .decls = ast.Node.Root.DeclList.init(arena), .doc_comments = null, @@ -162,17 +173,6 @@ pub fn translate( .eof_token = undefined, }; - const tree = try arena.create(ast.Tree); - tree.* = ast.Tree{ - .source = undefined, // need to use Buffer.toOwnedSlice later - .root_node = root_node, - .arena_allocator = undefined, - .tokens = ast.Tree.TokenList.init(arena), - .errors = ast.Tree.ErrorList.init(arena), - }; - tree.arena_allocator = tree_arena; - arena = &tree.arena_allocator.allocator; - var source_buffer = try std.Buffer.initSize(arena, 0); var context = Context{