diff --git a/tccgen.c b/tccgen.c index 7d7cafc..168d1ec 100644 --- a/tccgen.c +++ b/tccgen.c @@ -4944,6 +4944,7 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, { int size, align, addr, data_offset; int level; + char *mem_bufptr; ParseState saved_parse_state = {0}; TokenString init_str; Section *sec; @@ -4991,9 +4992,11 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, save_parse_state(&saved_parse_state); macro_ptr = init_str.str; + mem_bufptr = file->buf_ptr; next(); decl_initializer(type, NULL, 0, 1, 1); /* prepare second initializer parsing */ + file->buf_ptr = mem_bufptr; macro_ptr = init_str.str; next(); @@ -5148,6 +5151,7 @@ static void decl_initializer_alloc(CType *type, AttributeDef *ad, int r, if (init_str.str) { tok_str_free(init_str.str); restore_parse_state(&saved_parse_state); + file->buf_ptr = mem_bufptr; } } no_alloc: ;