From: Ben Pfaff Date: Thu, 2 May 2024 19:59:12 +0000 (-0700) Subject: expressions: Fix crash on type mismatch corner case. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63a9cdcec1c579afb0e04bf8526c59c69e6ee822;p=pspp expressions: Fix crash on type mismatch corner case. Thanks to Zhou Geng for reporting this bug as poc37 in the report here: https://lists.gnu.org/archive/html/bug-gnu-pspp/2024-03/msg00015.html --- diff --git a/src/language/expressions/parse.c b/src/language/expressions/parse.c index 7f618b23f4..8a5e095c91 100644 --- a/src/language/expressions/parse.c +++ b/src/language/expressions/parse.c @@ -549,6 +549,9 @@ type_coercion__ (struct expression *e, struct expr_node *node, size_t arg_idx, } break; + case OP_num_vec_elem: + break; + default: NOT_REACHED (); } diff --git a/tests/language/expressions/parse.at b/tests/language/expressions/parse.at index 4f66b85339..d151b24849 100644 --- a/tests/language/expressions/parse.at +++ b/tests/language/expressions/parse.at @@ -479,6 +479,7 @@ DEBUG EVALUATE /foobar(x). DEBUG EVALUATE /CONCAT.1('a' b). DEBUG EVALUATE /NCDF.CHISQ(1, 2, 3). DEBUG EVALUATE (a=1)(b=2) VECTOR/v('abc'). +DEBUG EVALUATE /VALUE(55). ]) for opt in OPT NOOPT; do @@ -537,6 +538,15 @@ evaluate.sps:9.36-9.40: note: DEBUG EVALUATE: This vector index has type | ^~~~~ v('abc') => error + +evaluate.sps:10.17-10.25: error: DEBUG EVALUATE: Function invocation +VALUE(number) does not match any known function. Candidates are: +VALUE(num_variable) +VALUE(number). + 10 | DEBUG EVALUATE /VALUE(55). + | ^~~~~~~~~ + +VALUE(55) => error ]) done AT_CLEANUP