From 90d57361997c9e20f2957d9fa12bc4632c05e214 Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Thu, 3 Oct 2019 10:34:43 +0200
Subject: [PATCH] Fix memory leak

---
 DDCore/src/Volumes.cpp | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/DDCore/src/Volumes.cpp b/DDCore/src/Volumes.cpp
index 14d532fb4..9733a504e 100644
--- a/DDCore/src/Volumes.cpp
+++ b/DDCore/src/Volumes.cpp
@@ -625,13 +625,12 @@ PlacedVolume _addNode(TGeoVolume* par, Volume daughter, int copy_nr, const Rotat
     daughter = daughter.reflect();
     //cout << "REFLECTION: (x.Cross(y)).Dot(z) " << (x.Cross(y)).Dot(z) << endl;
   }
+  TGeoRotation r;
   double elements[9];
   rot3D.GetComponents(elements);
-  auto r = new TGeoRotation();
-  r->SetMatrix(elements);
-  auto m = new TGeoCombiTrans(); 
-  m->SetRotation(r);
-  return _addNode(par, daughter, copy_nr, m);
+  r.SetMatrix(elements);
+  auto m = make_unique<TGeoCombiTrans>(TGeoTranslation(0,0,0),r);
+  return _addNode(par, daughter, copy_nr, m.release());
 }
 
 PlacedVolume _addNode(TGeoVolume* par, Volume daughter, int copy_nr, const Transform3D& tr)   {
@@ -648,14 +647,12 @@ PlacedVolume _addNode(TGeoVolume* par, Volume daughter, int copy_nr, const Trans
     daughter = daughter.reflect();
     //cout << "REFLECTION: (x.Cross(y)).Dot(z) " << (x.Cross(y)).Dot(z) << endl;
   }
+  TGeoRotation r;
   double elements[9];
   rot3D.GetComponents(elements);
-  auto m = new TGeoCombiTrans();
-  m->SetTranslation(pos3D.x(), pos3D.y(), pos3D.z()); 
-  auto r = new TGeoRotation();
-  r->SetMatrix(elements);
-  m->SetRotation(r);
-  return _addNode(par, daughter, copy_nr, m);
+  r.SetMatrix(elements);
+  auto m = make_unique<TGeoCombiTrans>(TGeoTranslation(pos3D.x(), pos3D.y(), pos3D.z()),r);
+  return _addNode(par, daughter, copy_nr, m.release());
 }
 
 /// Place daughter volume according to generic Transform3D
-- 
GitLab