aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-06-24 22:18:09 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-06-24 22:18:09 +0200
commitf3b875e434285919ea4cc71ac8691090e8731c32 (patch)
tree874844452dc17f2faca79ce61b8327f4c7abb4f1 /Eigen/src/Core
parent566867428c6134381c846d98ab86f9d2cc89a3c2 (diff)
fix infinite loop
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r--Eigen/src/Core/products/SelfadjointProduct.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/Eigen/src/Core/products/SelfadjointProduct.h b/Eigen/src/Core/products/SelfadjointProduct.h
index 9eb5de772..35d5ded21 100644
--- a/Eigen/src/Core/products/SelfadjointProduct.h
+++ b/Eigen/src/Core/products/SelfadjointProduct.h
@@ -75,7 +75,8 @@ struct ei_selfadjoint_product<Scalar, Index, MatStorageOrder, ColMajor, AAT, UpL
Index nc = size; // cache block size along the N direction
computeProductBlockingSizes<Scalar,Scalar>(kc, mc, nc);
// !!! mc must be a multiple of nr:
- mc = (mc/Blocking::nr)*Blocking::nr;
+ if(mc>Blocking::nr)
+ mc = (mc/Blocking::nr)*Blocking::nr;
Scalar* blockA = ei_aligned_stack_new(Scalar, kc*mc);
std::size_t sizeB = kc*Blocking::PacketSize*Blocking::nr + kc*size;