diff --git a/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h b/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h index 55b637ba8..2e0dcb90a 100644 --- a/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +++ b/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h @@ -78,11 +78,14 @@ struct general_matrix_matrix_triangular_product= nr and <= size + Index mc = (std::min)(size,(std::max)(static_cast(Traits::nr),blocking.mc())); - // !!! mc must be a multiple of nr: - if(mc > Traits::nr) - mc = (mc/Traits::nr)*Traits::nr; + // !!! mc must be a multiple of nr + if (mc > Traits::nr) { + using UnsignedIndex = typename make_unsigned::type; + mc = (UnsignedIndex(mc)/Traits::nr)*Traits::nr; + } std::size_t sizeA = kc*mc; std::size_t sizeB = kc*size;