Closes patch #6359
[pspp-builds.git] / src / language / stats / frequencies.q
index fdb19b0391f9c23dec4e036217e40b9bfa6af466..3857bd85805eb482503377384269a970025b8ab9 100644 (file)
@@ -538,10 +538,11 @@ precalc (struct casereader *input, struct dataset *ds)
   struct ccase c;
   size_t i;
 
-  if (!casereader_peek (input, 0, &c))
-    return;
-  output_split_file_values (ds, &c);
-  case_destroy (&c);
+  if (casereader_peek (input, 0, &c))
+    {
+      output_split_file_values (ds, &c);
+      case_destroy (&c);
+    }
 
   pool_destroy (data_pool);
   data_pool = pool_create ();
@@ -1498,7 +1499,7 @@ freq_tab_to_slice_array(const struct freq_tab *frq_tab,
     {
       const struct freq *frq = &frq_tab->valid[i];
 
-      slices[i].label = var_get_value_name (var, frq->value);
+      var_append_value_name (var, frq->value, &slices[i].label);
       slices[i].magnetude = frq->count;
     }
 
@@ -1512,12 +1513,17 @@ static void
 do_piechart(const struct variable *var, const struct freq_tab *frq_tab)
 {
   struct slice *slices;
-  int n_slices;
+  int n_slices, i;
 
   slices = freq_tab_to_slice_array(frq_tab, var, &n_slices);
 
   piechart_plot(var_to_string(var), slices, n_slices);
 
+  for (i = 0 ; i < n_slices ; ++i )
+    {
+      ds_destroy (&slices[i].label);
+    }
+
   free(slices);
 }