From df2866a475d36298a14cc1e97c6118e088ac85da Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 18 Oct 2015 13:14:47 +0200 Subject: [PATCH] Gnumeric Reader: Fix memory leak --- src/data/gnumeric-reader.c | 7 ++++--- src/data/ods-reader.c | 4 +++- src/data/spreadsheet-reader.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index e0e95069b6..0783e10f7c 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -189,6 +189,8 @@ gnumeric_unref (struct spreadsheet *s) free (r->sheets); state_data_destroy (&r->msd); + free (s->file_name); + free (r); } } @@ -555,7 +557,7 @@ gnumeric_reopen (struct gnumeric_reader *r, const char *filename, bool show_erro { r = xzalloc (sizeof *r); r->spreadsheet.n_sheets = -1; - r->spreadsheet.file_name = filename; + r->spreadsheet.file_name = strdup (filename); sd = &r->msd; } else @@ -589,8 +591,7 @@ gnumeric_reopen (struct gnumeric_reader *r, const char *filename, bool show_erro if ( ret != 1) { /* Does not seem to be a gnumeric file */ - xmlFreeTextReader (sd->xtr); - free (r); + gnumeric_unref (&r->spreadsheet); return NULL; } diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index 68484ce664..64ae8a6142 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -173,6 +173,8 @@ ods_unref (struct spreadsheet *s) zip_reader_destroy (r->zreader); free (r->sheets); + + free (s->file_name); free (r); } @@ -650,7 +652,7 @@ ods_probe (const char *filename, bool report_errors) r->n_allocated_sheets = 0; r->sheets = NULL; - r->spreadsheet.file_name = filename; + r->spreadsheet.file_name = strdup (filename); return &r->spreadsheet; error: diff --git a/src/data/spreadsheet-reader.h b/src/data/spreadsheet-reader.h index 314376379c..c03cf71642 100644 --- a/src/data/spreadsheet-reader.h +++ b/src/data/spreadsheet-reader.h @@ -59,7 +59,7 @@ enum spreadsheet_type struct spreadsheet { - const char *file_name; + char *file_name; enum spreadsheet_type type; -- 2.30.2