From 762dcdf61ab2c7446b1541053536f4994b3d2b54 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sun, 26 Apr 2020 14:59:11 +0200 Subject: [PATCH] Fix crash when bad autorecode /blank is encountered. Closes bug #58255. --- src/language/stats/autorecode.c | 3 ++- tests/language/stats/autorecode.at | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/language/stats/autorecode.c b/src/language/stats/autorecode.c index c093b1e6ab..91fffcf27a 100644 --- a/src/language/stats/autorecode.c +++ b/src/language/stats/autorecode.c @@ -491,9 +491,10 @@ arc_free (struct autorecode_pgm *arc) } size_t n_rec_items = - (arc->n_specs == 1 || arc->specs[0].items == arc->specs[1].items + (arc->n_specs >= 2 && arc->specs[0].items == arc->specs[1].items ? 1 : arc->n_specs); + for (size_t i = 0; i < n_rec_items; i++) { struct arc_spec *spec = &arc->specs[i]; diff --git a/tests/language/stats/autorecode.at b/tests/language/stats/autorecode.at index 42f3cd32c0..7e886fa08c 100644 --- a/tests/language/stats/autorecode.at +++ b/tests/language/stats/autorecode.at @@ -522,3 +522,24 @@ x,y 8,4 ]) AT_CLEANUP + + +AT_SETUP([AUTORECODE with /BLANK without specifier]) + +AT_DATA([autorecode.sps], [data list notable list /x (a18). +begin data +one +two +three +end data. + +* /BLANK should be either =MISSING or =VALID +autorecode x /into y + /blank + +execute. +]) + +AT_CHECK([pspp -O format=csv autorecode.sps], [1], [ignore]) + +AT_CLEANUP -- 2.30.2