From 683d5297614a7deb0f9e970350da757af848dda3 Mon Sep 17 00:00:00 2001
From: Martin Beseda <martin.beseda@vsb.cz>
Date: Wed, 9 Jan 2019 16:00:43 +0100
Subject: [PATCH] FIX: Started using smart pointers in CSVReader, solving some
 memory leaks.

---
 src/CSVReader/CSVReader.cpp | 7 ++++---
 src/CSVReader/CSVReader.h   | 4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/CSVReader/CSVReader.cpp b/src/CSVReader/CSVReader.cpp
index 8a7cf402..71352024 100644
--- a/src/CSVReader/CSVReader.cpp
+++ b/src/CSVReader/CSVReader.cpp
@@ -8,6 +8,7 @@
 #include <filesystem>
 #include <regex>
 #include <algorithm>
+#include <memory>
 #include <boost/lexical_cast.hpp>
 #include <boost/algorithm/string/erase.hpp>
 
@@ -25,7 +26,7 @@ namespace lib4neuro {
         this->delimiter = delimiter;
         this->ignore_first_line = ignore_first_line;
         this->header_included = ignore_first_line;
-        this->data = new std::vector<std::vector<std::string>>;
+        this->data = std::make_unique<std::vector<std::vector<std::string>>>();
     }
 
     void CSVReader::read() {
@@ -61,8 +62,8 @@ namespace lib4neuro {
         ifs.close();
     }
 
-    std::vector<std::vector<std::string>>* CSVReader::get_data() {
-        return this->data;
+    std::unique_ptr<std::vector<std::vector<std::string>>>* CSVReader::get_data() {
+        return &this->data;
     }
 
     void CSVReader::print_data() {
diff --git a/src/CSVReader/CSVReader.h b/src/CSVReader/CSVReader.h
index 713470ad..9ef3691a 100644
--- a/src/CSVReader/CSVReader.h
+++ b/src/CSVReader/CSVReader.h
@@ -43,7 +43,7 @@ namespace lib4neuro {
         /**
          *
          */
-        std::vector<std::vector<std::string>>* data;
+        std::unique_ptr<std::vector<std::vector<std::string>>> data;
 
     public:
 
@@ -64,7 +64,7 @@ namespace lib4neuro {
          *
          * @return
          */
-         LIB4NEURO_API std::vector<std::vector<std::string>>* get_data();
+         LIB4NEURO_API std::unique_ptr<std::vector<std::vector<std::string>>>* get_data();
 
         /**
          *
-- 
GitLab