From ef05ead0cd6f65198d4efa9bb60ad9214445adf9 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Thu, 3 Jan 2019 14:25:46 +0100
Subject: [PATCH] Fix crash in method fillVTKWriter

---
 src/harmonicmaps.cc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index 9ba0c2cd..00479169 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -105,15 +105,19 @@ void fillVTKWriter(Writer& vtkWriter, const Basis& feBasis, const SolutionType&
     vtkWriter.addVertexData(dFunction0, VTK::FieldInfo("director0", VTK::FieldInfo::Type::vector, 3));
     vtkWriter.addVertexData(dFunction1, VTK::FieldInfo("director1", VTK::FieldInfo::Type::vector, 3));
     vtkWriter.addVertexData(dFunction2, VTK::FieldInfo("director2", VTK::FieldInfo::Type::vector, 3));
+
+    // Needs to be in this scope; otherwise the stack-allocated dFunction?-objects will get
+    // destructed before 'write' is called.
+    vtkWriter.write(filename);
   }
   else
   {
     auto xFunction = Dune::Functions::makeDiscreteGlobalBasisFunction<TargetSpace::CoordinateType>(feBasis,TypeTree::hybridTreePath(),xEmbedded);
 
     vtkWriter.addVertexData(xFunction, VTK::FieldInfo("orientation", VTK::FieldInfo::Type::vector, xEmbedded[0].size()));
-  }
 
-  vtkWriter.write(filename);
+    vtkWriter.write(filename);
+  }
 }
 
 
-- 
GitLab