From fe7e64fb15abffab071e48af7e8fe012a0c39987 Mon Sep 17 00:00:00 2001 From: Amaury Johnan <amjohnen@gmail.com> Date: Thu, 6 Jun 2013 20:33:15 +0000 Subject: [PATCH] fix bug invertion --- Numeric/fullMatrix.cpp | 8 ++++++-- Numeric/fullMatrix.h | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Numeric/fullMatrix.cpp b/Numeric/fullMatrix.cpp index 3a73dda16c..eb75fa485a 100644 --- a/Numeric/fullMatrix.cpp +++ b/Numeric/fullMatrix.cpp @@ -296,8 +296,12 @@ bool fullMatrix<double>::invert(fullMatrix<double> &result) const { int M = size1(), N = size2(), lda = size1(), info; int *ipiv = new int[std::min(M, N)]; - if (result._own_data) - result.resize(M,N,false); + if (result.size2() != M || result.size1() != N) { + if (result._own_data || !result._data) + result.resize(M,N,false); + else + Msg::Fatal("FullMatrix: Bad dimension, I cannot write in proxy"); + } result.setAll(*this); F77NAME(dgetrf)(&M, &N, result._data, &lda, ipiv, &info); if(info == 0){ diff --git a/Numeric/fullMatrix.h b/Numeric/fullMatrix.h index a5cc2a8b4f..f278fe9836 100644 --- a/Numeric/fullMatrix.h +++ b/Numeric/fullMatrix.h @@ -474,7 +474,8 @@ class fullMatrix if(resetValue) setAll(scalar(0.)); return false; // no reallocation - } void setAsProxy(const fullMatrix<scalar> &original) + } + void setAsProxy(const fullMatrix<scalar> &original) { if(_data && _own_data) delete [] _data; -- GitLab