Merge pull request #5285 from ilya-lavrenov:ml5
[platform/upstream/opencv.git] / modules / ml / src / gbt.cpp
index 9b00cda..9ed6b4c 100644 (file)
@@ -1292,13 +1292,18 @@ CvGBTrees::calc_error( CvMLData* _data, int type, std::vector<float> *resp )
         return -FLT_MAX;
 
     float* pred_resp = 0;
+    bool needsFreeing = false;
+
     if (resp)
     {
         resp->resize(n);
         pred_resp = &((*resp)[0]);
     }
     else
+    {
         pred_resp = new float[n];
+        needsFreeing = true;
+    }
 
     Sample_predictor predictor = Sample_predictor(this, pred_resp, _data->get_values(),
             _data->get_missing(), _sample_idx);
@@ -1331,6 +1336,9 @@ CvGBTrees::calc_error( CvMLData* _data, int type, std::vector<float> *resp )
         err = err / (float)n;
     }
 
+    if (needsFreeing)
+        delete[]pred_resp;
+
     return err;
 }