fix push_macro, asked Tom to help me testfix push_macro

master
jiang 2014-05-16 12:15:00 +08:00
parent 5a514107c4
commit 52891b6ff6
3 changed files with 10 additions and 3 deletions

2
tcc.h
View File

@ -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 */

View File

@ -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;

View File

@ -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);