summaryrefslogtreecommitdiffstats
path: root/CAN-binder/low-can-binding/diagnostic
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-05-24 00:46:43 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-05-24 00:46:43 +0200
commitab4d52b65359c571267c71244578321580520c20 (patch)
tree557895b576e234b0342807aa64971577b22687d1 /CAN-binder/low-can-binding/diagnostic
parentd35da77dcd5273b54177f8bc8ae7e5992bb3ca09 (diff)
Fix memory leaks
Change-Id: I4a33b6d5f1f3b73af113aff62b024329b0ed5288 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder/low-can-binding/diagnostic')
-rw-r--r--CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.cpp7
-rw-r--r--CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.hpp1
-rw-r--r--CAN-binder/low-can-binding/diagnostic/diagnostic-manager.cpp2
3 files changed, 10 insertions, 0 deletions
diff --git a/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.cpp b/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.cpp
index e9f0cd10..35a6c562 100644
--- a/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.cpp
+++ b/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.cpp
@@ -82,6 +82,13 @@ active_diagnostic_request_t::active_diagnostic_request_t(const std::string& bus,
timeout_clock_{frequency_clock_t(10)}
{}
+active_diagnostic_request_t::~active_diagnostic_request_t()
+{
+ socket_.close();
+ delete handle_;
+ handle_ = nullptr;
+}
+
uint32_t active_diagnostic_request_t::get_id() const
{
return id_;
diff --git a/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.hpp b/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.hpp
index c295bed3..a1b8ab5b 100644
--- a/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.hpp
+++ b/CAN-binder/low-can-binding/diagnostic/active-diagnostic-request.hpp
@@ -95,6 +95,7 @@ public:
const std::string& name, bool wait_for_multiple_responses,
const DiagnosticResponseDecoder decoder,
const DiagnosticResponseCallback callback, float frequencyHz);
+ ~active_diagnostic_request_t();
uint32_t get_id() const;
DiagnosticRequestHandle* get_handle();
diff --git a/CAN-binder/low-can-binding/diagnostic/diagnostic-manager.cpp b/CAN-binder/low-can-binding/diagnostic/diagnostic-manager.cpp
index 4f4b842e..49013f8e 100644
--- a/CAN-binder/low-can-binding/diagnostic/diagnostic-manager.cpp
+++ b/CAN-binder/low-can-binding/diagnostic/diagnostic-manager.cpp
@@ -232,6 +232,8 @@ void diagnostic_manager_t::find_and_erase(active_diagnostic_request_t* entry, st
void diagnostic_manager_t::cancel_request(active_diagnostic_request_t* entry)
{
entry->get_socket().close();
+ delete entry;
+ entry = nullptr;
}
/// @brief Cleanup a specific request if it isn't running and get complete. As it is almost