Fix get_tok_str wrt wide characters

Fixes both, character constants and string literals.
This commit is contained in:
Daniel Glöckner 2008-11-20 12:21:59 +01:00 committed by grischka
parent deb410710c
commit 5fd6f7bd44

6
tcc.c
View File

@ -1770,8 +1770,9 @@ char *get_tok_str(int v, CValue *cv)
/* XXX: not quite exact, but only useful for testing */ /* XXX: not quite exact, but only useful for testing */
sprintf(p, "%Lu", cv->ull); sprintf(p, "%Lu", cv->ull);
break; break;
case TOK_CCHAR:
case TOK_LCHAR: case TOK_LCHAR:
cstr_ccat(&cstr_buf, 'L');
case TOK_CCHAR:
cstr_ccat(&cstr_buf, '\''); cstr_ccat(&cstr_buf, '\'');
add_char(&cstr_buf, cv->i); add_char(&cstr_buf, cv->i);
cstr_ccat(&cstr_buf, '\''); cstr_ccat(&cstr_buf, '\'');
@ -1784,8 +1785,9 @@ char *get_tok_str(int v, CValue *cv)
add_char(&cstr_buf, ((unsigned char *)cstr->data)[i]); add_char(&cstr_buf, ((unsigned char *)cstr->data)[i]);
cstr_ccat(&cstr_buf, '\0'); cstr_ccat(&cstr_buf, '\0');
break; break;
case TOK_STR:
case TOK_LSTR: case TOK_LSTR:
cstr_ccat(&cstr_buf, 'L');
case TOK_STR:
cstr = cv->cstr; cstr = cv->cstr;
cstr_ccat(&cstr_buf, '\"'); cstr_ccat(&cstr_buf, '\"');
if (v == TOK_STR) { if (v == TOK_STR) {