Fix memory leak upon failure to create matrix reader
[pspp] / src / language / data-io / matrix-reader.c
index 73d60c844dc19cfd66ad265fca9bfd107d1900fd..a9dd4f495274dc8dad54e78d797dfbe7252041aa 100644 (file)
@@ -183,6 +183,9 @@ matrix_reader_destroy (struct matrix_reader *mr)
   if (mr == NULL)
     return false;
   bool ret = casegrouper_destroy (mr->grouper);
+  free (mr->svars);
+  free (mr->cvars);
+  free (mr->fvars);
   free (mr);
   return ret;
 }
@@ -350,7 +353,10 @@ cmd_debug_matrix_read (struct lexer *lexer, struct dataset *ds)
         mem_writer_create (dict_get_proto (dataset_dict (ds))));
       struct matrix_reader *mr = matrix_reader_create (dataset_dict (ds), cr);
       if (!mr)
-        return CMD_FAILURE;
+        {
+          casereader_destroy (cr);
+          return CMD_FAILURE;
+        }
       matrix_reader_destroy (mr);
       return CMD_SUCCESS;
     }