Fix segfault in CholmodBase::factorize() for zero matrix

This commit is contained in:
Tyler Veness
2024-02-12 03:27:56 +00:00
committed by Charles Schlosser
parent 7b87b21910
commit d1d87973f4
3 changed files with 20 additions and 2 deletions

View File

@@ -54,6 +54,13 @@ void test_cholmod_ST() {
check_sparse_spd_determinant(llt_colmajor_upper);
check_sparse_spd_determinant(ldlt_colmajor_lower);
check_sparse_spd_determinant(ldlt_colmajor_upper);
check_sparse_zero_matrix(chol_colmajor_lower);
check_sparse_zero_matrix(chol_colmajor_upper);
check_sparse_zero_matrix(llt_colmajor_lower);
check_sparse_zero_matrix(llt_colmajor_upper);
check_sparse_zero_matrix(ldlt_colmajor_lower);
check_sparse_zero_matrix(ldlt_colmajor_upper);
}
template <typename T, int flags, typename IdxType>

View File

@@ -484,6 +484,15 @@ void check_sparse_spd_determinant(Solver& solver) {
}
}
template <typename Solver>
void check_sparse_zero_matrix(Solver& solver) {
typedef typename Solver::MatrixType Mat;
Mat A(1, 1);
solver.compute(A);
VERIFY_IS_EQUAL(solver.info(), NumericalIssue);
}
template <typename Solver, typename DenseMat>
Index generate_sparse_square_problem(Solver&, typename Solver::MatrixType& A, DenseMat& dA, int maxSize = 300,
int options = ForceNonZeroDiag) {