From 3f4c38c1e1aea21a9a7894160d394604adce5ddb Mon Sep 17 00:00:00 2001 From: Intel A80486DX2-66 Date: Tue, 30 Jul 2024 17:40:45 +0300 Subject: [PATCH] reverse-ramdisk.c: reduce memory overhead --- c-programming/experiments/reverse-ramdisk.c | 27 ++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/c-programming/experiments/reverse-ramdisk.c b/c-programming/experiments/reverse-ramdisk.c index 4c70482..14cf53f 100644 --- a/c-programming/experiments/reverse-ramdisk.c +++ b/c-programming/experiments/reverse-ramdisk.c @@ -123,27 +123,26 @@ int tf_alloc(size_t n, size_t type_size) { : realloc(temp_files, (num_temp_files + 1) * sizeof(TempFile)); if (temp_files == NULL) { - LINE_FAIL(-2); - return -1; - } - - // Allocate memory for this TempFile - TempFile* temp_file = malloc(sizeof(TempFile)); - if (temp_file == NULL) { + free(file_path); +#if IS_POSIX + close(file); +#else + fclose(file); +#endif LINE_FAIL(-2); return -1; } // Assign the ID, file path, file handler - temp_file->locked = false; - temp_file->ID = num_temp_files; - temp_file->file_path = strdup(file_path); - temp_file->file = file; + temp_files[num_temp_files].locked = false; + temp_files[num_temp_files].ID = num_temp_files; + temp_files[num_temp_files].file_path = file_path; + temp_files[num_temp_files].file = file; - // Add the temp file to the array - temp_files[num_temp_files++] = *temp_file; + // Increment the number of temp files + num_temp_files++; - return temp_file->ID; + return temp_files[num_temp_files - 1].ID; } int tf_free(int ID) {