diff --git a/Numeric/GmshMatrix.cpp b/Numeric/GmshMatrix.cpp
index 75ad9f134e3bebfb1cddd5d84016ac571242010f..caa73781d6c55ff51e7e53178375884cc62c44e5 100644
--- a/Numeric/GmshMatrix.cpp
+++ b/Numeric/GmshMatrix.cpp
@@ -127,33 +127,21 @@ bool gmshMatrix<double>::invert(gmshMatrix<double> &result)
 {
   int M = size1(), N = size2(), lda = size1(), info;
   int *ipiv = new int[std::min(M, N)];
-  bool ret = true;
   result = *this;
   dgetrf_(&M, &N, result._data, &lda, ipiv, &info);
   if(info == 0){
     int lwork = M * 4;
     double *work = new double[lwork];
     dgetri_(&M, result._data, &lda, ipiv, work, &lwork, &info);
-    if(info > 0){
-      Msg::Error("U(%d, %d)=0 in LU decomposition", info, info);
-      ret = false;
-    }
-    else if(info < 0){
-      Msg::Error("Wrong %d-th argument in matrix inversion", -info);
-      ret = false;
-    }
     delete [] work;
   }
-  else if(info > 0){
-    Msg::Error("U(%d, %d)=0 in LU decomposition", info, info);
-    ret = false;
-  }
-  else{
-    Msg::Error("Wrong %d-th argument in matrix factorization", -info);
-    ret = false;
-  }
   delete [] ipiv;
-  return ret;
+  if(info == 0) return true;
+  else if(info > 0)
+    Msg::Error("U(%d, %d)=0 in LU decomposition", info, info);
+  else
+    Msg::Error("Wrong %d-th argument in matrix inversion", -info);
+  return false;
 }
 
 template<>