From 52891b6ff680a03c966776b530cf94de9f831b07 Mon Sep 17 00:00:00 2001 From: jiang <30155751@qq.com> Date: Fri, 16 May 2014 12:15:00 +0800 Subject: [PATCH] fix push_macro, asked Tom to help me testfix push_macro --- tcc.h | 2 +- tccpp.c | 4 ++-- tests/tcctest.c | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tcc.h b/tcc.h index c49eac42..24cb5995 100644 --- a/tcc.h +++ b/tcc.h @@ -303,7 +303,7 @@ #define VSTACK_SIZE 256 #define STRING_MAX_SIZE 1024 #define PACK_STACK_SIZE 8 -#define MACRO_STACK_SIZE 4 +#define MACRO_STACK_SIZE 8 #define TOK_HASH_SIZE 8192 /* must be a power of two */ #define TOK_ALLOC_INCR 512 /* must be a power of two */ diff --git a/tccpp.c b/tccpp.c index a384548a..91c2aee8 100644 --- a/tccpp.c +++ b/tccpp.c @@ -234,7 +234,7 @@ static TokenSym *tok_alloc_new(TokenSym **pts, const char *str, int len) ts = tcc_malloc(sizeof(TokenSym) + len); table_ident[i] = ts; ts->tok = tok_ident++; - ts->sym_define.data = tcc_malloc(sizeof(Sym**)); + ts->sym_define.data = tcc_malloc(sizeof(Sym*)); ts->sym_define.off = 0; ts->sym_define.data[0] = NULL; ts->sym_define.size = 1; @@ -1743,7 +1743,7 @@ pack_error: size *= 2; if (size >= MACRO_STACK_SIZE) tcc_error("stack full"); - def->data = tcc_realloc(def->data, size*sizeof(Sym**)); + def->data = tcc_realloc(def->data, size*sizeof(Sym*)); def->size = size; } def->data[def->off] = tmp; diff --git a/tests/tcctest.c b/tests/tcctest.c index 3a623549..3fc7b828 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -383,7 +383,14 @@ comment #define MACRO_TEST "macro_test1\n" #pragma push_macro("MACRO_TEST") #undef MACRO_TEST + #define MACRO_TEST "macro_test2\n" + #pragma push_macro("MACRO_TEST") + #undef MACRO_TEST + + #define MACRO_TEST "macro_test3\n" + printf(MACRO_TEST); + #pragma pop_macro("MACRO_TEST") printf(MACRO_TEST); #pragma pop_macro("MACRO_TEST") printf(MACRO_TEST); -- 2.11.4.GIT