Fewer memory leaks
[pspp] / src / language / data-io / get-data.c
index 70f6c89cbc13df4f24f2c0fb85b64be1cdeab361..daec18f41da340c9d0e5b9c882eae4e3c2fbc53d 100644 (file)
@@ -62,7 +62,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
   lex_force_match (lexer, T_SLASH);
 
   if (!lex_force_match_id (lexer, "TYPE"))
-    return CMD_FAILURE;
+    goto error;
 
   lex_force_match (lexer, T_EQUALS);
 
@@ -102,6 +102,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
            goto error;
          reader = ods_make_reader (spreadsheet, &opts);
          dict = spreadsheet->dict;
+         ods_destroy (spreadsheet);
        }
 
       free (filename);
@@ -111,6 +112,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
          dataset_set_dict (ds, dict);
          dataset_set_source (ds, reader);
          free (tok);
+         destroy_spreadsheet_read_info (&opts);
          return CMD_SUCCESS;
        }
     }
@@ -118,8 +120,6 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds)
     msg (SE, _("Unsupported TYPE %s."), tok);
 
 
-
-
  error:
   destroy_spreadsheet_read_info (&opts);
   free (tok);