bug #1550: prevent avoidable memory allocation in RealSchur
diff --git a/Eigen/src/Eigenvalues/RealSchur.h b/Eigen/src/Eigenvalues/RealSchur.h index b72799e..4c53344 100644 --- a/Eigen/src/Eigenvalues/RealSchur.h +++ b/Eigen/src/Eigenvalues/RealSchur.h
@@ -284,13 +284,13 @@ using std::abs; m_matT = matrixH; + m_workspaceVector.resize(m_matT.cols()); if(computeU) - m_matU = matrixQ; + matrixQ.evalTo(m_matU, m_workspaceVector); Index maxIters = m_maxIters; if (maxIters == -1) maxIters = m_maxIterationsPerRow * matrixH.rows(); - m_workspaceVector.resize(m_matT.cols()); Scalar* workspace = &m_workspaceVector.coeffRef(0); // The matrix m_matT is divided in three parts.