diff --git a/Common/Context.cpp b/Common/Context.cpp
index 64cb56103ce8f7c6560d35817da5b55542c815c4..a4fc1b82ae98a0692bd07091964a27fa939a2c61 100644
--- a/Common/Context.cpp
+++ b/Common/Context.cpp
@@ -81,6 +81,7 @@ CTX::CTX()
   mesh.numSubEdges = 0;
   mesh.colorCarousel = 0;
   mesh.ignorePartBound = 0;
+  mesh.saveTri = 1;
   color.mesh.tangents = color.mesh.tetrahedron = color.mesh.triangle = 0;
   color.mesh.prism = color.mesh.pyramid = color.mesh.hexahedron = 0;
   color.mesh.tangents = color.mesh.line = color.mesh.quadrangle = 0;
diff --git a/Numeric/polynomialBasis.h b/Numeric/polynomialBasis.h
index 9d502e9e7c9d48311c97190cda15c595b4fa9d06..7b1988c4e8d8ee16e4fb25fb3a4509f2417520e0 100644
--- a/Numeric/polynomialBasis.h
+++ b/Numeric/polynomialBasis.h
@@ -154,8 +154,9 @@ class polynomialBasis
     double dfv[1256][3];
     dfm.resize (coefficients.size1(), coord.size1() * 3, false);
     int ii = 0;
+    int dimCoord = coord.size2();
     for (int iPoint=0; iPoint< coord.size1(); iPoint++) {
-      df(coord(iPoint,0), coord(iPoint, 1), coord(iPoint, 2), dfv);
+      df(coord(iPoint,0), dimCoord > 1 ? coord(iPoint, 1) : 0., dimCoord > 2 ? coord(iPoint, 2) : 0., dfv);
       for (int i = 0; i < coefficients.size1(); i++) {
         dfm(i, iPoint * 3 + 0) = dfv[i][0];
         dfm(i, iPoint * 3 + 1) = dfv[i][1];
diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
index f386ff6854c93b0f3e0657d92b063fae4ae2fc34..f8174b5eb3103d0ccd7f991c8b010890b61d8659 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp
@@ -297,9 +297,10 @@ void Mesh::distSqToStraight(std::vector<double> &dSq)
     for (int i = 0; i < nV1; ++i) {
       sxyz[_el2V[iEl][i]] = _vert[_el2V[iEl][i]]->point();
     }
+    int dim = lagrange->points.size2();
     for (int i = nV1; i < nV; ++i) {
       double f[256];
-      lagrange1->f(lagrange->points(i, 0), lagrange->points(i, 1), lagrange->points(i, 2), f);
+      lagrange1->f(lagrange->points(i, 0), dim > 1 ? lagrange->points(i, 1) : 0., dim > 2 ? lagrange->points(i, 2) : 0., f);
       for (int j = 0; j < nV1; ++j)
         sxyz[_el2V[iEl][i]] += sxyz[_el2V[iEl][j]] * f[j];
     }