diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | pre-process.c | 10 | ||||
| -rw-r--r-- | token.h | 2 |
3 files changed, 8 insertions, 6 deletions
@@ -1,5 +1,5 @@ CC=gcc -CFLAGS=-O -g -Wall +CFLAGS=-O -g -Wall -Wwrite-strings LDFLAGS=-g AR=ar diff --git a/pre-process.c b/pre-process.c index 2481ffc1..e2045ff7 100644 --- a/pre-process.c +++ b/pre-process.c @@ -95,7 +95,7 @@ static void replace_with_integer(struct token *token, unsigned int val) static void replace_with_defined(struct token *token) { - static char *string[] = { "0", "1" }; + static const char *string[] = { "0", "1" }; int defined = 0; if (token_type(token) != TOKEN_IDENT) warning(token->pos, "operator \"defined\" requires an identifier"); @@ -382,11 +382,13 @@ static int merge(struct token *left, struct token *right) left->pos.noexpand = 0; return 1; - case TOKEN_NUMBER: + case TOKEN_NUMBER: { + char *number = __alloc_bytes(strlen(buffer) + 1); + memcpy(number, buffer, strlen(buffer) + 1); token_type(left) = TOKEN_NUMBER; /* could be . + num */ - left->number = __alloc_bytes(strlen(buffer) + 1); - memcpy(left->number, buffer, strlen(buffer) + 1); + left->number = number; return 1; + } case TOKEN_SPECIAL: if (buffer[2] && buffer[3]) @@ -150,7 +150,7 @@ struct token { struct position pos; struct token *next; union { - char *number; + const char *number; struct ident *ident; unsigned int special; struct string *string; |
