diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2023-04-14 21:23:49 +0200 |
---|---|---|
committer | Johnny Richard <johnny@johnnyrichard.com> | 2023-04-15 02:13:50 +0200 |
commit | 7d1db093bc3af0d4252bf7c613c8d2a8d7d935b4 (patch) | |
tree | 0d697454ef06b1a5086a0cd1a6718aa02a1322e1 /src | |
parent | 25e80b71cd2c509865aa9be1c1b69657999263e5 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer.c | 24 |
1 files changed, 16 insertions, 8 deletions
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); |