From c15c995092246830f1fa00736fabdf18238ed320 Mon Sep 17 00:00:00 2001 From: Sebastien Blaise <sebastien.blaise@uclouvain.be> Date: Wed, 13 Mar 2013 13:49:42 +0000 Subject: [PATCH] gmsh: fixed invalid read in bases --- Numeric/JacobianBasis.cpp | 3 ++- Numeric/polynomialBasis.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Numeric/JacobianBasis.cpp b/Numeric/JacobianBasis.cpp index 29ea8fb902..06186615c0 100644 --- a/Numeric/JacobianBasis.cpp +++ b/Numeric/JacobianBasis.cpp @@ -1143,7 +1143,8 @@ JacobianBasis::JacobianBasis(int tag) for (int i=0; i<numPrimMapNodes; i++) { xBar += primMapBasis->points(i,0); yBar += primMapBasis->points(i,1); - zBar += primMapBasis->points(i,2); + if (primMapBasis->points.size2() > 2) + zBar += primMapBasis->points(i,2); } xBar /= numPrimMapNodes; yBar /= numPrimMapNodes; diff --git a/Numeric/polynomialBasis.cpp b/Numeric/polynomialBasis.cpp index d33cf242d9..d5c06f6c06 100644 --- a/Numeric/polynomialBasis.cpp +++ b/Numeric/polynomialBasis.cpp @@ -409,7 +409,7 @@ void polynomialBasis::f(const fullMatrix<double> &coord, fullMatrix<double> &sf) double p[1256]; sf.resize (coord.size1(), coefficients.size1()); for (int iPoint=0; iPoint< coord.size1(); iPoint++) { - evaluateMonomials(coord(iPoint,0), coord(iPoint,1), coord(iPoint,2), p); + evaluateMonomials(coord(iPoint,0), coord(iPoint,1), coord.size2() > 2 ? coord(iPoint,2) : 0, p); for (int i = 0; i < coefficients.size1(); i++) { sf(iPoint,i) = 0.; for (int j = 0; j < coefficients.size2(); j++) sf(iPoint,i) += coefficients(i, j) * p[j]; -- GitLab