FREQUENCIES: Fix memory leak with percentiles and split file.
[pspp] / src / language / stats / frequencies.c
index 307a869ba2d1e17d723c80443f19b8ba7a7a7240..3f7afaa361801e468879dd5e246ce4a6d6bb9c80 100644 (file)
@@ -359,7 +359,8 @@ calc_percentiles (const struct frq_proc *frq, struct var_freqs *vf)
   if (!frq->n_percentiles)
     return;
 
-  vf->percentiles = xnmalloc (frq->n_percentiles, sizeof *vf->percentiles);
+  if (!vf->percentiles)
+    vf->percentiles = xnmalloc (frq->n_percentiles, sizeof *vf->percentiles);
 
   const struct freq_tab *ft = &vf->tab;
   const double W = ft->valid_cases;
@@ -1244,9 +1245,9 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds)
  error:
 
   free (vars);
-  free (frq.vars);
   for (size_t i = 0; i < frq.n_vars; i++)
     free (frq.vars[i].percentiles);
+  free (frq.vars);
   free (frq.bar);
   free (frq.pie);
   free (frq.hist);