don't intern symbols newly generated by new_uniq_sym
This commit is contained in:
parent
8273659bd0
commit
b9ef51530f
10
src/macro.c
10
src/macro.c
|
@ -24,9 +24,15 @@ new_uniq_sym(pic_state *pic, pic_sym base)
|
||||||
|
|
||||||
str = (char *)pic_alloc(pic, strlen(pic_symbol_name(pic, base)) + (int)log10(s) + 3);
|
str = (char *)pic_alloc(pic, strlen(pic_symbol_name(pic, base)) + (int)log10(s) + 3);
|
||||||
sprintf(str, "%s@%d", pic_symbol_name(pic, base), s);
|
sprintf(str, "%s@%d", pic_symbol_name(pic, base), s);
|
||||||
uniq = pic_intern_cstr(pic, str);
|
|
||||||
|
|
||||||
pic_free(pic, str);
|
/* don't put the symbol to ic->sym_tbl to keep it uninterned */
|
||||||
|
if (pic->slen >= pic->scapa) {
|
||||||
|
pic->scapa *= 2;
|
||||||
|
pic->sym_pool = pic_realloc(pic, pic->sym_pool, sizeof(const char *) * pic->scapa);
|
||||||
|
}
|
||||||
|
uniq = pic->slen++;
|
||||||
|
pic->sym_pool[uniq] = str;
|
||||||
|
|
||||||
return uniq;
|
return uniq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue