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.