From 1195994880b6a83e61807381df2721ac5256e876 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 27 Feb 2017 00:05:08 -0500 Subject: fix inability to write to global in some cases before, when we initialized a variable by copying the initialization value, it made the internal const value references point to a duplicate value, resulting in a phony duplicate global value being updated instead of the real on. now the behavior is as expected. thanks to hoppetosse for pointing out this bug on IRC. --- src/ast_render.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/ast_render.cpp') diff --git a/src/ast_render.cpp b/src/ast_render.cpp index b1e1306c7c..8a17cc4cf5 100644 --- a/src/ast_render.cpp +++ b/src/ast_render.cpp @@ -964,26 +964,26 @@ static void ast_render_tld_var(AstRender *ar, Buf *name, TldVar *tld_var) { const char *extern_str = extern_string(var->linkage == VarLinkageExternal); fprintf(ar->f, "%s%s%s %s", visib_mod_str, extern_str, const_or_var, buf_ptr(name)); - if (var->value.type->id == TypeTableEntryIdNumLitFloat || - var->value.type->id == TypeTableEntryIdNumLitInt || - var->value.type->id == TypeTableEntryIdMetaType) + if (var->value->type->id == TypeTableEntryIdNumLitFloat || + var->value->type->id == TypeTableEntryIdNumLitInt || + var->value->type->id == TypeTableEntryIdMetaType) { // skip type } else { - fprintf(ar->f, ": %s", buf_ptr(&var->value.type->name)); + fprintf(ar->f, ": %s", buf_ptr(&var->value->type->name)); } - if (var->value.special == ConstValSpecialRuntime) { + if (var->value->special == ConstValSpecialRuntime) { fprintf(ar->f, ";\n"); return; } fprintf(ar->f, " = "); - if (var->value.special == ConstValSpecialStatic && - var->value.type->id == TypeTableEntryIdMetaType) + if (var->value->special == ConstValSpecialStatic && + var->value->type->id == TypeTableEntryIdMetaType) { - TypeTableEntry *type_entry = var->value.data.x_type; + TypeTableEntry *type_entry = var->value->data.x_type; if (type_entry->id == TypeTableEntryIdStruct) { const char *layout_str = layout_string(type_entry->data.structure.layout); fprintf(ar->f, "%sstruct {\n", layout_str); @@ -1022,7 +1022,7 @@ static void ast_render_tld_var(AstRender *ar, Buf *name, TldVar *tld_var) { } else { Buf buf = BUF_INIT; buf_resize(&buf, 0); - render_const_value(&buf, &var->value); + render_const_value(&buf, var->value); fprintf(ar->f, "%s", buf_ptr(&buf)); } -- cgit v1.2.3