X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fgnumeric-reader.c;h=69dd23689fc6b979d54540c23ae65511b46a885f;hb=8f5194875a0a3d41fef91825fd8378bb004d6f51;hp=1b8357fa9d91c170d4a41d0ad31ce0e23440fdbc;hpb=c7f7b3a9bde4caa74779422c6857e489646eed87;p=pspp diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index 1b8357fa9d..69dd23689f 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -460,15 +460,18 @@ gnumeric_reopen (struct gnumeric_reader *r, const char *filename) } if (r == NULL) - r = xzalloc (sizeof *r); - - r->xtr = xtr; - r->spreadsheet.sheets = -1; - r->state = STATE_PRE_INIT; + { + r = xzalloc (sizeof *r); + r->spreadsheet.sheets = -1; + r->spreadsheet.file_name = filename; + } r->target_sheet = NULL; r->target_sheet_index = -1; + r->row = r->col = -1; + r->state = STATE_PRE_INIT; + r->xtr = xtr; /* Advance to the start of the workbook. This gives us some confidence that we are actually dealing with a gnumeric @@ -482,9 +485,6 @@ gnumeric_reopen (struct gnumeric_reader *r, const char *filename) r->spreadsheet.type = SPREADSHEET_GNUMERIC; - if (filename) - r->spreadsheet.file_name = filename; - return r; } @@ -492,10 +492,8 @@ gnumeric_reopen (struct gnumeric_reader *r, const char *filename) struct spreadsheet * gnumeric_probe (const char *filename) { - struct gnumeric_reader *r = NULL; - - r = gnumeric_reopen (r, filename); - + struct gnumeric_reader *r = gnumeric_reopen (NULL, filename); + return &r->spreadsheet; } @@ -515,6 +513,9 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, r = (struct gnumeric_reader *) (spreadsheet); + if (r->row != -1) + r = gnumeric_reopen (r, NULL); + if ( opts->cell_range ) { if ( ! convert_cell_ref (opts->cell_range,