don't intern symbols newly generated by new_uniq_sym

This commit is contained in:
Yuichi Nishiwaki 2014-01-08 20:41:29 +09:00
parent 8273659bd0
commit b9ef51530f
1 changed files with 8 additions and 2 deletions

View File

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