From 064963c685ba3e54fb35105bb0766454b276e63c Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Thu, 26 Oct 2023 14:49:44 +0700 Subject: [PATCH] Fix the damn text file loading function --- rendering.h | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/rendering.h b/rendering.h index 9e93904..a7a3066 100644 --- a/rendering.h +++ b/rendering.h @@ -25,20 +25,32 @@ void checkShader(unsigned int shader, int statusFlag, char* actionName) { } } -char* loadText(char* path) { - char* buffer = NULL; - long length; - FILE* f = fopen(path, "rb"); - if (f) { - fseek(f, 0, SEEK_END); - length = ftell(f); - fseek(f, 0, SEEK_SET); - buffer = calloc(length, sizeof(char)); - if (buffer) { - fread(buffer, 1, length, f); - } - fclose(f); +char *loadText(char* path) { + char *buffer = NULL; + FILE *f = fopen(path, "r"); + if (f == NULL) { + return NULL; } + if (fseek(f, 0, SEEK_END) != 0) { + return NULL; + } + + i16 length = ftell(f); + if (length == -1) { + return NULL; + } + buffer = malloc((length + 1) * sizeof(char)); + if (fseek(f, 0, SEEK_SET) != 0) { + return NULL; + } + usize newLen = fread(buffer, sizeof(char), length, f); + if (ferror(f) != 0) { + return NULL; + } else { + buffer[newLen] = '\0'; + } + + fclose(f); return buffer; }