From d4be914019ec50c0be1d6a8590189d8c86a64f41 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 22 Mar 2011 15:10:06 +0900 Subject: [PATCH] Fix initialized vector variables. The whole initialized variable system is wonky, but it will do for now. --- tools/qfcc/source/def.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/qfcc/source/def.c b/tools/qfcc/source/def.c index 6c6a6190f..86575535a 100644 --- a/tools/qfcc/source/def.c +++ b/tools/qfcc/source/def.c @@ -276,7 +276,7 @@ init_elements (struct def_s *def, expr_t *eles) EMIT_STRING (def->space, g->string_var, c->e.value.v.string_val); } else { - memcpy (g, &c->e, type_size (get_type (c)) * 4); + memcpy (g, &c->e.value.v, type_size (get_type (c)) * 4); } } } @@ -468,9 +468,11 @@ initialize_def (symbol_t *sym, type_t *type, expr_t *init, defspace_t *space, // FIXME offset pointers D_INT (sym->s.def) = init->e.value.v.pointer.val; } else { - memcpy (D_POINTER (void, sym->s.def), &init->e.value, + memcpy (D_POINTER (void, sym->s.def), &init->e.value.v, type_size (type) * sizeof (pr_type_t)); } + sym->s.def->initialized = sym->s.def->constant = 1; + sym->s.def->nosave = 1; } } }