From: Ben Pfaff Date: Fri, 3 May 2024 21:45:11 +0000 (-0700) Subject: pivot-output: Fix crash when layers axis has no leaves. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3904f78990c3c684a860022b2ab7ec847667b11e;p=pspp pivot-output: Fix crash when layers axis has no leaves. Thanks to Zhou Geng for reporting this bug as poc6 in the report here: https://lists.gnu.org/archive/html/bug-gnu-pspp/2024-03/msg00015.html --- diff --git a/src/output/pivot-output.c b/src/output/pivot-output.c index 3666ffbcee..35aac25a09 100644 --- a/src/output/pivot-output.c +++ b/src/output/pivot-output.c @@ -41,7 +41,7 @@ pivot_output_next_layer (const struct pivot_table *pt, size_t *indexes, const struct pivot_axis *layer_axis = &pt->axes[PIVOT_AXIS_LAYER]; if (print && pt->look->print_all_layers) return pivot_axis_iterator_next (indexes, layer_axis); - else if (!indexes) + else if (!indexes && layer_axis->extent) { size_t size = layer_axis->n_dimensions * sizeof *pt->current_layer; return size ? xmemdup (pt->current_layer, size) : xmalloc (1); diff --git a/tests/language/commands/ctables.at b/tests/language/commands/ctables.at index b71695f759..4757d4ea0c 100644 --- a/tests/language/commands/ctables.at +++ b/tests/language/commands/ctables.at @@ -6044,3 +6044,22 @@ AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl ╰──────┴────────┴──────────────┴─────┴─────┴─────────┴────────────┴────────────╯ ]) AT_CLEANUP + +AT_SETUP([CTABLES crash with all-missing data]) +AT_DATA([ctables.sps], [dnl +DATA LIST LIST NOTABLE/a. +BEGIN DATA. +. +END DATA. + +* The final one below previously crashed. +CTABLES/TAB A. +CTABLES/TAB BY A. +CTABLES/TAB BY BY A. +]) +AT_CHECK([pspp ctables.sps -O box=unicode -O width=80], [0], [dnl +Custom Tables + +Custom Tables +]) +AT_CLEANUP \ No newline at end of file