aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--Makefile2
-rw-r--r--pre-process.c10
-rw-r--r--token.h2
3 files changed, 8 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 083a2dcc..4f29ec17 100644
--- a/Makefile
+++ b/Makefile
@@ -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])
diff --git a/token.h b/token.h
index ecb8ea01..d4defd7e 100644
--- a/token.h
+++ b/token.h
@@ -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;