pivot-table: Properly allocate pivot_table's current_layer.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 7 Jul 2019 04:36:59 +0000 (21:36 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 7 Jul 2019 04:36:59 +0000 (21:36 -0700)
The default current_layer should be all-zeros, but the code wasn't
allocating current_layer at all.  This didn't cause much of a problem
because nothing in the current tree allocates layers, but it will as
layers are added.

Thanks to John Darrington for reporting the bug.

src/output/pivot-table.c
src/output/pivot-table.h

index 2adcf62634d32a3385a513cd85e344b9870a0d77..092ebfc53a9564da3d9488a3972a87231ce8f527 100644 (file)
@@ -279,6 +279,13 @@ pivot_dimension_create__ (struct pivot_table *table,
     axis->dimensions, (axis->n_dimensions + 1) * sizeof *axis->dimensions);
   axis->dimensions[axis->n_dimensions++] = d;
 
+  if (axis_type == PIVOT_AXIS_LAYER)
+    {
+      free (table->current_layer);
+      table->current_layer = xcalloc (axis[PIVOT_AXIS_LAYER].n_dimensions,
+                                      sizeof *table->current_layer);
+    }
+
   /* XXX extent and label_depth need to be calculated later. */
 
   return d;
index c7198a2add47f7a7465f3540f3497afa15616230..8ea20644059b87eb20b797cbcd7e0747c337f0ee 100644 (file)
@@ -378,7 +378,7 @@ struct pivot_table
     bool row_labels_in_corner;
     bool show_grid_lines;
     bool omit_empty;       /* Omit empty rows and columns? */
-    size_t *current_layer; /* axis[PIVOT_AXIS_LAYER]->n_dimensions elements. */
+    size_t *current_layer; /* axis[PIVOT_AXIS_LAYER].n_dimensions elements. */
     char *table_look;
     enum settings_value_show show_values;
     enum settings_value_show show_variables;