From 8d7a73e48e82b41f8e8b90afb434c98452556990 Mon Sep 17 00:00:00 2001 From: Matthieu Vigne Date: Wed, 31 Oct 2018 20:28:18 +0100 Subject: bug #1617: Fix SolveTriangular.solveInPlace crashing for empty matrix. This made FullPivLU.kernel() crash when used on the zero matrix. Add unit test for FullPivLU.kernel() on the zero matrix. --- Eigen/src/Core/SolveTriangular.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Eigen/src/Core/SolveTriangular.h') diff --git a/Eigen/src/Core/SolveTriangular.h b/Eigen/src/Core/SolveTriangular.h index a0011d4f9..2e061caab 100644 --- a/Eigen/src/Core/SolveTriangular.h +++ b/Eigen/src/Core/SolveTriangular.h @@ -169,6 +169,9 @@ EIGEN_DEVICE_FUNC void TriangularViewImpl::solveInPlace(c OtherDerived& other = _other.const_cast_derived(); eigen_assert( derived().cols() == derived().rows() && ((Side==OnTheLeft && derived().cols() == other.rows()) || (Side==OnTheRight && derived().cols() == other.cols())) ); eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper|Lower))); + // If solving for a 0x0 matrix, nothing to do, simply return. + if (derived().cols() == 0) + return; enum { copy = (internal::traits::Flags & RowMajorBit) && OtherDerived::IsVectorAtCompileTime && OtherDerived::SizeAtCompileTime!=1}; typedef typename internal::conditional