From 47d2b8fc4c255ea1bc2c2874f853a20895ed0494 Mon Sep 17 00:00:00 2001 From: John Darrington <john@darrington.wattle.id.au> Date: Sun, 31 Mar 2013 18:21:34 +0200 Subject: [PATCH] Fix bug reading empty sheets --- src/data/gnumeric-reader.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index 454654c544..197c1d1a59 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -221,10 +221,11 @@ gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_) state_data_destroy (&r->rsd); - if ( ! r->used_first_case ) + if (r->first_case && ! r->used_first_case ) case_unref (r->first_case); - caseproto_unref (r->proto); + if (r->proto) + caseproto_unref (r->proto); gnumeric_destroy (&r->spreadsheet); } @@ -592,8 +593,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, r = (struct gnumeric_reader *) (spreadsheet); - if (r->rsd.row != -1) - r = gnumeric_reopen (r, NULL, true); + r = gnumeric_reopen (r, NULL, true); if ( opts->cell_range ) { @@ -618,6 +618,8 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, r->target_sheet_index = opts->sheet_index; r->rsd.row = r->rsd.col = -1; r->rsd.current_sheet = -1; + r->first_case = NULL; + r->proto = NULL; /* Advance to the start of the cells for the target sheet */ while ( (r->rsd.state != STATE_CELL || r->rsd.row < r->start_row ) -- 2.30.2