From ec4d41edb54e660a12a72fc170e4dafc71ca3c64 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Thu, 25 Jun 2026 07:56:52 +1000 Subject: [PATCH] fix some errors that happen when they shouldnt --- src/file.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/file.c b/src/file.c index 6c12214..3d4aad6 100644 --- a/src/file.c +++ b/src/file.c @@ -64,10 +64,12 @@ ResultType(int64_t, objectPtr) impl_read(int64_t* args, CometVM* vm) { } size_t bytesRead = fread(content, amountToRead, 1, f); - if (bytesRead != amountToRead) { - char* buffer = malloc(128); - snprintf(buffer, 128, "Error while reading file: %s", strerror(errno)); - return cometError(vm, "IOFail", buffer); + if (bytesRead < amountToRead) { + if (ferror(f)) { + char* buffer = malloc(128); + snprintf(buffer, 128, "Error while reading file: %s", strerror(errno)); + return cometError(vm, "IOFail", buffer); + } } // serialize string @@ -88,9 +90,13 @@ ResultType(int64_t, objectPtr) impl_readLine(int64_t* args, CometVM* vm) { ssize_t read = getline(&line, &len, f); if (read == -1) { - char* buffer = malloc(128); - snprintf(buffer, 128, "Error while reading line: %s", strerror(errno)); - return cometError(vm, "IOFail", buffer); + if (ferror(f)) { + char* buffer = malloc(128); + snprintf(buffer, 128, "Error while reading line: %s", strerror(errno)); + return cometError(vm, "IOFail", buffer); + } else { + return Success(int64_t, objectPtr, cometSerializeString("")); + } } if (read > 0 && line[read - 1] == '\n') {