diff --git a/Numeric/fullMatrix.cpp b/Numeric/fullMatrix.cpp
index b8ecb795b2fab9a381ef97906fbb10c9e661e806..677c290bedae7f4dee347c3a1dcbc486bf039d13 100644
--- a/Numeric/fullMatrix.cpp
+++ b/Numeric/fullMatrix.cpp
@@ -297,7 +297,8 @@ bool fullMatrix<double>::invert(fullMatrix<double> &result) const
 {
   int M = size1(), N = size2(), lda = size1(), info;
   int *ipiv = new int[std::min(M, N)];
-  result.resize(M,N,false);
+  if (result._own_data)
+    result.resize(M,N,false);
   result.setAll(*this);
   F77NAME(dgetrf)(&M, &N, result._data, &lda, ipiv, &info);
   if(info == 0){