From a4f1cc9e2879b9ff976f7018b26181b5a47962ea Mon Sep 17 00:00:00 2001 From: Daniele Forsi Date: Sun, 7 Apr 2024 13:10:20 +0200 Subject: [PATCH] Fix memleaks found with AddressSanitizer/LeakSanitizer Found with: ASAN_OPTIONS="detect_odr_violation=1,strip_path_prefix=$(pwd)/" build/sdrangel Fixes: Direct leak of 176096 byte(s) in 5503 object(s) allocated from: #0 0x7f3a464f46c8 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:95 #1 0x7f3a44009219 in Airline::Init::Init() sdrbase/util/airlines.cpp:5559 #2 0x7f3a43dc797d in _sub_I_65535_0.0 (build/lib/libsdrbase.so+0x3c797d) (BuildId: fb568b705538a6e506ee23027626f4366b25aa50) #3 0x7f3a46c6ce3d in call_init elf/dl-init.c:74 #4 0x7f3a46c6ce3d in call_init elf/dl-init.c:26 Indirect leak of 989274 byte(s) in 22012 object(s) allocated from: #0 0x7f3a464f3bd7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69 #1 0x7f3a410e63f1 in QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlags) (/lib/x86_64-linux-gnu/libQt5Core.so.5+0xe63f1) (BuildId: eaf989d675ab5f0e8e9033fa527c9ed018f70370) --- sdrbase/util/airlines.cpp | 7 +++++++ sdrbase/util/airlines.h | 1 + 2 files changed, 8 insertions(+) diff --git a/sdrbase/util/airlines.cpp b/sdrbase/util/airlines.cpp index 75fe7fc16..e2b55d7ae 100644 --- a/sdrbase/util/airlines.cpp +++ b/sdrbase/util/airlines.cpp @@ -5560,3 +5560,10 @@ Airline::Init::Init() s += 4; } } + +Airline::Init::~Init() +{ + foreach(const QString s, m_icaoHash.keys()) { + delete m_icaoHash[s]; + } +} diff --git a/sdrbase/util/airlines.h b/sdrbase/util/airlines.h index 7eed494f8..34ac5890b 100644 --- a/sdrbase/util/airlines.h +++ b/sdrbase/util/airlines.h @@ -55,6 +55,7 @@ private: friend struct Init; struct Init { Init(); + ~Init(); static const char *m_airlines[]; }; static Init m_init;