From 50b5967aed7702daedf29d0e04e752ef77dcd6c7 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 25 Jul 2021 21:22:20 +0200 Subject: [PATCH] fix: struct memory leaks return struct not length of struct --- discspan.c | 4 ++-- splitter.c | 7 +++++-- splitter.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/discspan.c b/discspan.c index ec9c7b5..7bb1f70 100644 --- a/discspan.c +++ b/discspan.c @@ -11,7 +11,7 @@ extern void (*printEvent)(const char *output, unsigned long long splitgroesse); extern void useage(); extern file_size_t * read_input_file(); -extern int splitter(file_size_t *input, const char *output, +extern file_size_t * splitter(file_size_t *input, const char *output, unsigned long long splitgroesse, int length); int struct_array_length = 0; @@ -104,7 +104,7 @@ int main(int argc, char *argv[]) int num = 1; while (struct_array_length > 0) { sprintf(outname, "%s%03d", output, num++); - struct_array_length = splitter(fs, outname, split, struct_array_length); + fs = splitter(fs, outname, split, struct_array_length); } free(fs); diff --git a/splitter.c b/splitter.c index 8896f16..e2d7b44 100644 --- a/splitter.c +++ b/splitter.c @@ -6,6 +6,8 @@ #include "discspan.h" #include "splitter.h" +extern int struct_array_length; + void writeOutputFile(const char *outputPath, file_size_t *disc, int length) { FILE *out = fopen(outputPath, "w"); @@ -23,7 +25,7 @@ void onPrintEvent(const char *output, unsigned long long splitgroesse) printEvent(output, splitgroesse); } -int splitter(file_size_t *input, const char *output, +file_size_t * splitter(file_size_t *input, const char *output, unsigned long long splitgroesse, int length) { file_size_t *rest = (file_size_t *) @@ -62,5 +64,6 @@ int splitter(file_size_t *input, const char *output, free(rest); free(disc); - return restcount; + struct_array_length = restcount; + return input; } diff --git a/splitter.h b/splitter.h index bfc7a3d..da7f3ae 100644 --- a/splitter.h +++ b/splitter.h @@ -21,7 +21,7 @@ void (*printEvent)(const char *output, unsigned long long splitgroesse); * * @return Restlaenge des neuen Arrays */ -int splitter(file_size_t *input, const char *output, +file_size_t * splitter(file_size_t *input, const char *output, unsigned long long splitgroesse, int length); #endif -- 2.39.5