summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Richard <johnny@johnnyrichard.com>2023-04-14 21:23:49 +0200
committerJohnny Richard <johnny@johnnyrichard.com>2023-04-15 02:13:50 +0200
commit7d1db093bc3af0d4252bf7c613c8d2a8d7d935b4 (patch)
tree0d697454ef06b1a5086a0cd1a6718aa02a1322e1
parent25e80b71cd2c509865aa9be1c1b69657999263e5 (diff)
build: Enable warning and debug CFLAGS
After enabling the warning flags, the compiler was firing the following warnings: warning: implicit declaration of function ‘strdup’; did you mean ‘strcmp’? [-Wimplicit-function-declaration] token->value = strdup("("); ^~~~~~ strcmp warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] token->value = strdup("("); ^ In order to fix these warnings above, I have decided to replace *strdup* and *strndup* by *strcpy* and *strncpy* functions. Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
-rw-r--r--Makefile3
-rw-r--r--src/lexer.c24
2 files changed, 18 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 2cd62a2..f2aa236 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,7 @@
TARGET := pipac
SRC_DIR := src
BUILD_DIR := build
+CFLAGS := -Wall -Wextra -pedantic -std=c11 -ggdb
SRCS := $(wildcard $(SRC_DIR)/*.c)
OBJS := $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRCS))
@@ -9,7 +10,7 @@ OBJS := $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRCS))
all: $(TARGET)
$(TARGET): $(BUILD_DIR) $(OBJS)
- $(CC) $(OBJS) -o $(TARGET) $(CFLAGS)
+ $(CC) $(CFLAGS) $(OBJS) -o $(TARGET)
$(BUILD_DIR):
@mkdir -p $@
diff --git a/src/lexer.c b/src/lexer.c
index 7b0206a..14165ae 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -55,7 +55,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NUMBER;
- token->value = strndup(lexer->src + begin, lexer->cur - begin);
+ token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
+ strncpy(token->value, lexer->src + begin, lexer->cur - begin);
token->row = lexer->row;
token->col = begin - lexer->bol;
return;
@@ -68,7 +69,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
lexer_drop_char(lexer);
}
token->kind = TOKEN_NAME;
- token->value = strndup(lexer->src + begin, lexer->cur - begin);
+ token->value = (char *) malloc(sizeof(char) * (lexer->cur - begin + 1));
+ strncpy(token->value, lexer->src + begin, lexer->cur - begin);
token->row = lexer->row;
token->col = begin - lexer->bol;
return;
@@ -76,7 +78,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '(') {
token->kind = TOKEN_OPAREN;
- token->value = strdup("(");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "(");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -85,7 +88,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ')') {
token->kind = TOKEN_CPAREN;
- token->value = strdup(")");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ")");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -94,7 +98,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ':') {
token->kind = TOKEN_COLON;
- token->value = strdup(":");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ":");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -103,7 +108,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == ';') {
token->kind = TOKEN_SEMICOLON;
- token->value = strdup(";");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, ";");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -112,7 +118,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '{') {
token->kind = TOKEN_OCURLY;
- token->value = strdup("{");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "{");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);
@@ -121,7 +128,8 @@ lexer_next_token(lexer_t *lexer, token_t *token)
if (lexer_is_not_eof(lexer) && lexer_current_char(lexer) == '}') {
token->kind = TOKEN_CCURLY;
- token->value = strdup("}");
+ token->value = (char *) malloc(sizeof(char) + 1);
+ strcpy(token->value, "}");
token->row = lexer->row;
token->col = lexer->cur - lexer->bol;
lexer_drop_char(lexer);