From 0ca79a318c420626b3cc9596a967cc64f919f7c9 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Tue, 23 Aug 2016 12:14:26 +0200
Subject: [PATCH] [MGTL] Deep copy of seg to avoid modifying orig. pnts.

---
 MeshGeoToolsLib/GeoMapper.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/MeshGeoToolsLib/GeoMapper.cpp b/MeshGeoToolsLib/GeoMapper.cpp
index 49a8267361b..230c7e47119 100644
--- a/MeshGeoToolsLib/GeoMapper.cpp
+++ b/MeshGeoToolsLib/GeoMapper.cpp
@@ -413,14 +413,17 @@ static void mapPointOnSurfaceElement(MeshLib::Element const& elem,
 static std::vector<MeshLib::Element const*>
 getCandidateElementsForLineSegmentIntersection(
     MeshLib::MeshElementGrid const& mesh_element_grid,
-    GeoLib::LineSegment segment)
+    GeoLib::LineSegment const& segment)
 {
+    GeoLib::LineSegment seg_deep_copy(
+        new GeoLib::Point(segment.getBeginPoint()),
+        new GeoLib::Point(segment.getEndPoint()), true);
     // modify z coordinates such that all surface elements around the line
     // segment are found
-    segment.getBeginPoint()[2] = mesh_element_grid.getMinPoint()[2];
-    segment.getEndPoint()[2] = mesh_element_grid.getMaxPoint()[2];
+    seg_deep_copy.getBeginPoint()[2] = mesh_element_grid.getMinPoint()[2];
+    seg_deep_copy.getEndPoint()[2] = mesh_element_grid.getMaxPoint()[2];
     std::array<MathLib::Point3d, 2> const pnts{
-        {segment.getBeginPoint(), segment.getEndPoint()}};
+        {seg_deep_copy.getBeginPoint(), seg_deep_copy.getEndPoint()}};
     GeoLib::AABB aabb(pnts.cbegin(), pnts.cend());
 
     auto candidate_elements = mesh_element_grid.getElementsInVolume(
-- 
GitLab