From 0a06c8307e9a8c503b569bd9f086e9883dba5079 Mon Sep 17 00:00:00 2001
From: Paul Seyfert <pseyfert.mathphys@gmail.com>
Date: Tue, 23 Oct 2018 23:41:21 +0200
Subject: [PATCH] [TMVA/BDT/IMT] fix memory leak

---
 tmva/tmva/src/DecisionTree.cxx | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tmva/tmva/src/DecisionTree.cxx b/tmva/tmva/src/DecisionTree.cxx
index 9cd8d2e8022..a2b63660d9f 100644
--- a/tmva/tmva/src/DecisionTree.cxx
+++ b/tmva/tmva/src/DecisionTree.cxx
@@ -1498,7 +1498,7 @@ Double_t TMVA::DecisionTree::TrainNodeFast( const EventConstList & eventSample,
             nBins[ivar] = node->GetSampleMax(ivar) - node->GetSampleMin(ivar) + 1;
          }
       }
-     
+
       cutValues[ivar] = new Double_t [nBins[ivar]];
    }
 
@@ -1855,15 +1855,15 @@ Double_t TMVA::DecisionTree::TrainNodeFast( const EventConstList & eventSample,
    // #### Now in TrainNodeInfo, but I got a malloc segfault when I tried to destruct arrays there.
    // #### So, I changed these from dynamic arrays to std::vector to fix this memory problem
    // #### so no need to destruct them anymore. I didn't see any performance drop as a result.
-   //for (UInt_t i=0; i<cNvars; i++) {
+   for (UInt_t i=0; i<cNvars; i++) {
    //   delete [] nodeInfo.nSelS[i];
    //   delete [] nodeInfo.nSelB[i];
    //   delete [] nodeInfo.nSelS_unWeighted[i];
    //   delete [] nodeInfo.nSelB_unWeighted[i];
    //   delete [] nodeInfo.target[i];
    //   delete [] nodeInfo.target2[i];
-   //   delete [] cutValues[i];
-   //}
+     delete [] cutValues[i];
+   }
    //delete [] nodeInfo.nSelS;
    //delete [] nodeInfo.nSelB;
    //delete [] nodeInfo.nSelS_unWeighted;
-- 
GitLab