aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2014-01-19 03:04:51 +0100
committerGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2014-01-19 03:04:51 +0100
commit66f1c56aabc4ec4789405d11f544806312d49cd6 (patch)
tree7cc1343edcd2c615958ec06f4a2b0eee4eb9f081 /Eigen
parentaa0db35185f7eda94eb103b6bb92630c432512e5 (diff)
sparse_solve_retval_base::defaultEvalTo created extremely oversized temporary matrices in some cases
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/misc/SparseSolve.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/Eigen/src/misc/SparseSolve.h b/Eigen/src/misc/SparseSolve.h
index 244bb8ec7..05caa9266 100644
--- a/Eigen/src/misc/SparseSolve.h
+++ b/Eigen/src/misc/SparseSolve.h
@@ -54,8 +54,10 @@ template<typename _DecompositionType, typename Rhs> struct sparse_solve_retval_b
static const int NbColsAtOnce = 4;
int rhsCols = m_rhs.cols();
int size = m_rhs.rows();
- Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmp(size,rhsCols);
- Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmpX(size,rhsCols);
+ // the temporary matrices do not need more columns than NbColsAtOnce:
+ int tmpCols = (std::min)(rhsCols, NbColsAtOnce);
+ Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmp(size,tmpCols);
+ Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmpX(size,tmpCols);
for(int k=0; k<rhsCols; k+=NbColsAtOnce)
{
int actualCols = std::min<int>(rhsCols-k, NbColsAtOnce);