From: Ben Pfaff Date: Sat, 18 Mar 2023 19:22:42 +0000 (-0700) Subject: MATRIX: Fix multiplication of empty matrices. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c67cea6fc7f9b928ea297e8e784a0306c7f287b3;p=pspp MATRIX: Fix multiplication of empty matrices. This crashed due to an assertion failure in blas before. Thanks to Youngseok Choi for reporting the bug. --- diff --git a/src/language/commands/matrix.c b/src/language/commands/matrix.c index f34e24edda..9076476ed7 100644 --- a/src/language/commands/matrix.c +++ b/src/language/commands/matrix.c @@ -3336,7 +3336,8 @@ matrix_expr_evaluate_mul_mat (const struct matrix_expr *e, } gsl_matrix *c = gsl_matrix_alloc (a->size1, b->size2); - gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c); + if (a->size1 && b->size2) + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, a, b, 0.0, c); return c; } diff --git a/tests/language/commands/matrix.at b/tests/language/commands/matrix.at index 8412468ac9..9ebd23671f 100644 --- a/tests/language/commands/matrix.at +++ b/tests/language/commands/matrix.at @@ -9,6 +9,9 @@ COMPUTE b={a; 1; 2; 3}. PRINT b. COMPUTE c={a, 1, 2, 3}. PRINT c. +/* Multiplication of empty matrices previously assert-failed in blas. +COMPUTE d = a * a. +PRINT d. END MATRIX. ]) AT_CHECK([pspp matrix.sps], [0], [dnl @@ -21,6 +24,8 @@ b c 1 2 3 + +d ]) AT_CLEANUP