Skip to content

Commit

Permalink
Merge pull request f4exb#2058 from dforsi/fix/asan
Browse files Browse the repository at this point in the history
Fix memory leaks
  • Loading branch information
f4exb authored May 20, 2024
2 parents 1836ae3 + 0ae4466 commit dd864f1
Show file tree
Hide file tree
Showing 16 changed files with 52 additions and 39 deletions.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ set(sdrangel_VERSION_SUFFIX "")

# SDRAngel cmake options
option(DEBUG_OUTPUT "Print debug messages" OFF)
option(SANITIZE_ADDRESS "Activate memory address sanitization" OFF)
option(SANITIZE_ADDRESS "Activate detection of uninitialized memory (AddressSanitizer)" OFF)
option(SANITIZE_MEMORY "Activate detection of leaked memory (LeakSanitizer)" OFF)
option(RX_SAMPLE_24BIT "Internal 24 bit Rx DSP" ON)
option(BUILD_SERVER "Build Server" ON)
option(BUILD_GUI "Build GUI" ON)
Expand Down
1 change: 1 addition & 0 deletions plugins/feature/afc/afcgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ bool AFCGUI::handleMessage(const Message& message)
{
const AFC::MsgDeviceSetListsReport& report = (AFC::MsgDeviceSetListsReport&) message;
updateDeviceSetLists(report);
return true;
}

return false;
Expand Down
7 changes: 3 additions & 4 deletions plugins/feature/gs232controller/gs232controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,11 +288,10 @@ void GS232Controller::applySettings(const GS232ControllerSettings& settings, con
m_selectedPipe = m_availableChannelOrFeatureHandler.registerPipes(settings.m_source, {"target"});
}

GS232ControllerWorker::MsgConfigureGS232ControllerWorker *msg = GS232ControllerWorker::MsgConfigureGS232ControllerWorker::create(
settings, settingsKeys, force
);

if (m_worker) {
GS232ControllerWorker::MsgConfigureGS232ControllerWorker *msg = GS232ControllerWorker::MsgConfigureGS232ControllerWorker::create(
settings, settingsKeys, force
);
m_worker->getInputMessageQueue()->push(msg);
}

Expand Down
7 changes: 7 additions & 0 deletions plugins/feature/map/webserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
///////////////////////////////////////////////////////////////////////////////////

#include <QtAlgorithms>
#include <QResource>
#include <QFile>
#include <QRegularExpression>
Expand All @@ -41,6 +42,12 @@ WebServer::WebServer(quint16 &port, QObject* parent) :
m_mimeTypes.insert(".geojson", new MimeType("application/geo+json"));
}

WebServer::~WebServer()
{
qDeleteAll(m_substitutions);
qDeleteAll(m_mimeTypes);
}

void WebServer::incomingConnection(qintptr socket)
{
QTcpSocket* s = new QTcpSocket(this);
Expand Down
1 change: 1 addition & 0 deletions plugins/feature/map/webserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class WebServer : public QTcpServer

public:
WebServer(quint16 &port, QObject* parent = 0);
~WebServer();
void incomingConnection(qintptr socket) override;
void addPathSubstitution(const QString &from, const QString &to);
void addSubstitution(QString path, QString from, QString to);
Expand Down
6 changes: 3 additions & 3 deletions plugins/feature/pertester/pertester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,10 @@ void PERTester::applySettings(const PERTesterSettings& settings, const QList<QSt
{
qDebug() << "PERTester::applySettings:" << settings.getDebugString(settingsKeys, force) << " force: " << force;

PERTesterWorker::MsgConfigurePERTesterWorker *msg = PERTesterWorker::MsgConfigurePERTesterWorker::create(
settings, settingsKeys, force
);
if (m_worker) {
PERTesterWorker::MsgConfigurePERTesterWorker *msg = PERTesterWorker::MsgConfigurePERTesterWorker::create(
settings, settingsKeys, force
);
m_worker->getInputMessageQueue()->push(msg);
}

Expand Down
7 changes: 3 additions & 4 deletions plugins/feature/satellitetracker/satellitetracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,10 @@ void SatelliteTracker::applySettings(const SatelliteTrackerSettings& settings, c
tlesChanged = true;
}

SatelliteTrackerWorker::MsgConfigureSatelliteTrackerWorker *msg = SatelliteTrackerWorker::MsgConfigureSatelliteTrackerWorker::create(
settings, settingsKeys, force
);

if (m_worker) {
SatelliteTrackerWorker::MsgConfigureSatelliteTrackerWorker *msg = SatelliteTrackerWorker::MsgConfigureSatelliteTrackerWorker::create(
settings, settingsKeys, force
);
m_worker->getInputMessageQueue()->push(msg);
}

Expand Down
6 changes: 6 additions & 0 deletions plugins/feature/skymap/webserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ WebServer::WebServer(quint16 &port, QObject* parent) :
m_mimeTypes.insert(".geojson", new MimeType("application/geo+json"));
}

WebServer::~WebServer()
{
qDeleteAll(m_substitutions);
qDeleteAll(m_mimeTypes);
}

void WebServer::incomingConnection(qintptr socket)
{
QTcpSocket* s = new QTcpSocket(this);
Expand Down
1 change: 1 addition & 0 deletions plugins/feature/skymap/webserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class WebServer : public QTcpServer

public:
WebServer(quint16 &port, QObject* parent = 0);
~WebServer();
void incomingConnection(qintptr socket) override;
void addPathSubstitution(const QString &from, const QString &to);
void addSubstitution(QString path, QString from, QString to);
Expand Down
14 changes: 7 additions & 7 deletions plugins/feature/startracker/startracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,25 +163,25 @@ bool StarTracker::handleMessage(const Message& cmd)
}
else if (MsgSetSolarFlux::match(cmd))
{
MsgSetSolarFlux& msg = (MsgSetSolarFlux&) cmd;
m_solarFlux = msg.getFlux();
if (m_worker) {
MsgSetSolarFlux& msg = (MsgSetSolarFlux&) cmd;
m_solarFlux = msg.getFlux();
m_worker->getInputMessageQueue()->push(new MsgSetSolarFlux(msg));
}
return true;
}
else if (MainCore::MsgStarTrackerDisplaySettings::match(cmd))
{
MainCore::MsgStarTrackerDisplaySettings& settings = (MainCore::MsgStarTrackerDisplaySettings&) cmd;
if (m_guiMessageQueue) {
MainCore::MsgStarTrackerDisplaySettings& settings = (MainCore::MsgStarTrackerDisplaySettings&) cmd;
m_guiMessageQueue->push(new MainCore::MsgStarTrackerDisplaySettings(settings));
}
return true;
}
else if (MainCore::MsgStarTrackerDisplayLoSSettings::match(cmd))
{
MainCore::MsgStarTrackerDisplayLoSSettings& settings = (MainCore::MsgStarTrackerDisplayLoSSettings&) cmd;
if (m_guiMessageQueue) {
MainCore::MsgStarTrackerDisplayLoSSettings& settings = (MainCore::MsgStarTrackerDisplayLoSSettings&) cmd;
m_guiMessageQueue->push(new MainCore::MsgStarTrackerDisplayLoSSettings(settings));
}
return true;
Expand Down Expand Up @@ -246,10 +246,10 @@ void StarTracker::applySettings(const StarTrackerSettings& settings, const QList
}
}

StarTrackerWorker::MsgConfigureStarTrackerWorker *msg = StarTrackerWorker::MsgConfigureStarTrackerWorker::create(
settings, settingsKeys, force
);
if (m_worker) {
StarTrackerWorker::MsgConfigureStarTrackerWorker *msg = StarTrackerWorker::MsgConfigureStarTrackerWorker::create(
settings, settingsKeys, force
);
m_worker->getInputMessageQueue()->push(msg);
}

Expand Down
4 changes: 2 additions & 2 deletions sdrbase/device/deviceuserargs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ QByteArray DeviceUserArgs::serialize() const
{
SimpleSerializer s(1);
QByteArray data;
QDataStream *stream = new QDataStream(&data, QIODevice::WriteOnly);
*stream << m_argsByDevice;
QDataStream stream(&data, QIODevice::WriteOnly);
stream << m_argsByDevice;
s.writeBlob(1, data);
return s.final();
}
Expand Down
2 changes: 2 additions & 0 deletions sdrbase/maincore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ void MainCore::removeLastFeatureSet()
FeatureSet *featureSet = m_featureSets.back();
m_featureSetsMap.remove(featureSet);
m_featureSets.pop_back();
delete featureSet;
}
}

Expand All @@ -227,6 +228,7 @@ void MainCore::removeLastDeviceSet()
DeviceSet *deviceSet = m_deviceSets.back();
m_deviceSetsMap.remove(deviceSet);
m_deviceSets.pop_back();
delete deviceSet;
}
}

Expand Down
24 changes: 6 additions & 18 deletions sdrbase/settings/mainsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
///////////////////////////////////////////////////////////////////////////////////////
#include <QtAlgorithms>
#include <QSettings>
#include <QStringList>
#include <QDebug>
Expand All @@ -34,24 +35,11 @@ MainSettings::MainSettings() :

MainSettings::~MainSettings()
{
for (int i = 0; i < m_presets.count(); ++i)
{
delete m_presets[i];
}

for (int i = 0; i < m_commands.count(); ++i)
{
delete m_commands[i];
}

for (int i = 0; i < m_featureSetPresets.count(); ++i)
{
delete m_featureSetPresets[i];
}
for (int i = 0; i < m_pluginPresets.count(); ++i)
{
delete m_pluginPresets[i];
}
qDeleteAll(m_presets);
qDeleteAll(m_commands);
qDeleteAll(m_featureSetPresets);
qDeleteAll(m_pluginPresets);
qDeleteAll(m_configurations);
}

QString MainSettings::getFileLocation() const
Expand Down
5 changes: 5 additions & 0 deletions sdrbase/util/airlines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5560,3 +5560,8 @@ Airline::Init::Init()
s += 4;
}
}

Airline::Init::~Init()
{
qDeleteAll(m_icaoHash);
}
1 change: 1 addition & 0 deletions sdrbase/util/airlines.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class SDRBASE_API Airline {
friend struct Init;
struct Init {
Init();
~Init();
static const char *m_airlines[];
};
static Init m_init;
Expand Down
2 changes: 2 additions & 0 deletions sdrgui/gui/glshaderspectrogram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,8 @@ void GLShaderSpectrogram::drawSurface(SpectrumSettings::SpectrogramStyle style,

void GLShaderSpectrogram::cleanup()
{
delete m_vao;
m_vao = nullptr;
delete m_programShaded;
m_programShaded = nullptr;
delete m_programSimple;
Expand Down

0 comments on commit dd864f1

Please sign in to comment.