Fix bug in freeing of duplicated files
authorAndrey Kuzmin <andrey.v.kuzmin@gmail.com>
Tue, 1 Apr 2014 18:27:04 +0000 (12:27 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 1 Apr 2014 18:27:04 +0000 (12:27 -0600)
Signed-off-by: Jens Axboe <axboe@fb.com>
init.c

diff --git a/init.c b/init.c
index adb9066b14a86631e0019967889863c091f0b2ac..72d106afbb4892f5ce586a8b3101efbe331b0478 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1160,17 +1160,18 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
                td_new->o.new_group = 0;
 
                if (file_alloced) {
                td_new->o.new_group = 0;
 
                if (file_alloced) {
-                       td_new->files_index = 0;
-                       td_new->files_size = 0;
                        if (td_new->files) {
                                struct fio_file *f;
                                for_each_file(td_new, f, i) {
                                        if (f->file_name)
                        if (td_new->files) {
                                struct fio_file *f;
                                for_each_file(td_new, f, i) {
                                        if (f->file_name)
-                                               free(f->file_name);
-                                       free(f);
+                                               sfree(f->file_name);
+                                       sfree(f);
                                }
                                }
+                               free(td_new->files);
                                td_new->files = NULL;
                        }
                                td_new->files = NULL;
                        }
+                       td_new->files_index = 0;
+                       td_new->files_size = 0;
                        if (td_new->o.filename) {
                                free(td_new->o.filename);
                                td_new->o.filename = NULL;
                        if (td_new->o.filename) {
                                free(td_new->o.filename);
                                td_new->o.filename = NULL;