diff options
| author | LLLL Colonq <llll@colonq> | 2026-03-03 14:20:26 -0500 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-03-03 14:20:26 -0500 |
| commit | 3707dfaa64715c8fb1ba8a23f9762fef174538d8 (patch) | |
| tree | 539ae38f4cde9d6f8ffa5eb5f9a8a32c203a0942 /src/lexer.c | |
| parent | fae5921bfcbf9f0c8c138dd13aa9c8822a75a316 (diff) | |
Collect more garbage!
Diffstat (limited to 'src/lexer.c')
| -rw-r--r-- | src/lexer.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/lexer.c b/src/lexer.c index 623dd39..3a741b4 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -82,22 +82,20 @@ void pit_lex_bytes(pit_lexer *ret, char *buf, i64 len) { ret->column = ret->start_column = 0; ret->error = NULL; } -void pit_lex_file(pit_lexer *ret, char *path) { +i64 pit_lex_file(pit_lexer *ret, char *path) { FILE *f = fopen(path, "r"); - if (f == NULL) { - pit_panic("failed to open file for lexing: %s", path); - return; - } + if (f == NULL) { return -1; } fseek(f, 0, SEEK_END); i64 len = ftell(f); fseek(f, 0, SEEK_SET); - char *buf = calloc((size_t) ret->len, sizeof(char)); - if ((size_t) ret->len != fread(ret->input, sizeof(char), (size_t) ret->len, f)) { - pit_panic("failed to read file for lexing: %s", path); - return; + char *buf = calloc((size_t) len, sizeof(char)); + if ((size_t) len != fread(buf, sizeof(char), (size_t) len, f)) { + fclose(f); + return -1; } fclose(f); pit_lex_bytes(ret, buf, len); + return 0; } pit_lex_token pit_lex_next(pit_lexer *st) { |
