diff --git a/scanner.c b/scanner.c index 4dbf79d..6c5c030 100644 --- a/scanner.c +++ b/scanner.c @@ -1,5 +1,6 @@ #include "scanner.h" #include "token.h" +#include const char* source_code; //Start and Current hold the offsets that index into the string source_code. @@ -245,9 +246,17 @@ void ParseNumber(TokenList* list) { } snprintf(lexeme, current - start, "%s", &source_code[start]); - double value = atof(lexeme); //Will this reference become stale on return? + double* value = calloc(1, sizeof(double)); + + if (!value) { + fprintf(stderr, "Failed to calloc for number value. %s\n", strerror(errno)); + free(lexeme); + return; + } + + *value = atof(lexeme); - AddToTokenList(CreateToken(lexeme, &value, line, Number), list); + AddToTokenList(CreateToken(lexeme, value, line, Number), list); } char PeekNext() {