diff --git a/Geo/MElementCut.h b/Geo/MElementCut.h
index 174e19fa245b620b846a26e1b5da691746e7bafd..65f7a9d47e12e9db113caf362cd76109315c5dc3 100644
--- a/Geo/MElementCut.h
+++ b/Geo/MElementCut.h
@@ -47,7 +47,7 @@ class MPolyhedron : public MElement {
       _parts.push_back(vT[i]);
     _init();
   }
-  ~MPolyhedron() 
+  ~MPolyhedron()
   {
     if(_owner)
       delete _orig;
@@ -60,7 +60,7 @@ class MPolyhedron : public MElement {
   virtual int getNumVolumeVertices() const { return _innerVertices.size(); }
   virtual MVertex *getVertex(int num)
   {
-    return (num < (int)_vertices.size()) ? 
+    return (num < (int)_vertices.size()) ?
       _vertices[num] : _innerVertices[num - _vertices.size()];
   }
   virtual int getNumEdges() { return _edges.size(); }
@@ -114,7 +114,7 @@ class MPolyhedron : public MElement {
       vol += _parts[i]->getVolume();
     return vol;
   }
-  virtual const polynomialBasis* getFunctionSpace(int order=-1) const 
+  virtual const polynomialBasis* getFunctionSpace(int order=-1) const
   {
     return _orig->getFunctionSpace(order);
   }
@@ -191,13 +191,13 @@ class MPolygon : public MElement {
   virtual int getNumFaceVertices() const { return _innerVertices.size(); }
   virtual MVertex *getVertex(int num)
   {
-    return (num < (int)_vertices.size()) ? 
+    return (num < (int)_vertices.size()) ?
       _vertices[num] : _innerVertices[num - _vertices.size()];
   }
   virtual int getNumEdges() { return _edges.size(); }
   virtual MEdge getEdge(int num) { return _edges[num]; }
   virtual int getNumEdgesRep() { return getNumEdges(); }
-  virtual void getEdgeRep(int num, double *x, double *y, double *z, SVector3 *n) 
+  virtual void getEdgeRep(int num, double *x, double *y, double *z, SVector3 *n)
   {
     MEdge e(getEdge(num));
     _getEdgeRep(e.getVertex(0), e.getVertex(1), x, y, z, n, 0);
@@ -233,7 +233,7 @@ class MPolygon : public MElement {
     _edges.clear();
     _initVertices();
   }
-  virtual const polynomialBasis* getFunctionSpace(int order=-1) const 
+  virtual const polynomialBasis* getFunctionSpace(int order=-1) const
   {
     return _orig->getFunctionSpace(order);
   }
@@ -293,7 +293,7 @@ class MTriangleBorder : public MTriangle {
     return NULL;
   }
   virtual int getTypeForMSH() const { return MSH_TRI_B; }
-  virtual const polynomialBasis* getFunctionSpace(int order=-1) const 
+  virtual const polynomialBasis* getFunctionSpace(int order=-1) const
   {
     return getParent()->getFunctionSpace(order);
   }
@@ -337,7 +337,7 @@ class MPolygonBorder : public MPolygon {
     return NULL;
   }
   virtual int getTypeForMSH() const { return MSH_POLYG_B; }
-  virtual const polynomialBasis* getFunctionSpace(int order=-1) const 
+  virtual const polynomialBasis* getFunctionSpace(int order=-1) const
   {
     return getParent()->getFunctionSpace(order);
   }
@@ -381,9 +381,10 @@ class MLineBorder : public MLine {
     return NULL;
   }
   virtual int getTypeForMSH() const { return MSH_LIN_B; }
-  virtual const polynomialBasis* getFunctionSpace(int order=-1) const 
+  virtual const polynomialBasis* getFunctionSpace(int order=-1) const
   {
-    return getParent()->getFunctionSpace(order);
+    if (this->getParent()) return getParent()->getFunctionSpace(order);
+    else return NULL;
   }
   virtual void getShapeFunctions(double u, double v, double w, double s[], int o)
   {