[vlc-devel] [PATCH] qt: audiodevicemodel: fix memory leak

Alexandre Janniaux ajanni at videolabs.io
Tue Jan 28 17:35:22 CET 2020


Simplify the release of devices list while ensuring the array are
correctly released even when there is no devices in the list.
---
 modules/gui/qt/util/audio_device_model.cpp | 14 ++++++--------
 modules/gui/qt/util/audio_device_model.hpp |  8 ++++----
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/modules/gui/qt/util/audio_device_model.cpp b/modules/gui/qt/util/audio_device_model.cpp
index 272e429128..8e59c32f9c 100644
--- a/modules/gui/qt/util/audio_device_model.cpp
+++ b/modules/gui/qt/util/audio_device_model.cpp
@@ -52,17 +52,15 @@ AudioDeviceModel::AudioDeviceModel(vlc_player_t *player, QObject *parent)
 
 AudioDeviceModel::~AudioDeviceModel()
 {
-    if (m_inputs > 0)
+    for (int i=0; i<m_inputs; i++)
     {
-        for (int i=0; i<m_inputs; i++){
-            free(m_ids[i]);
-            free(m_names[i]);
-        }
-
-        free(m_ids);
-        free(m_names);
+        free(m_ids[i]);
+        free(m_names[i]);
     }
 
+    free(m_ids);
+    free(m_names);
+
     vlc_player_locker locker{m_player};
     vlc_player_aout_RemoveListener(m_player, m_player_aout_listener);
 
diff --git a/modules/gui/qt/util/audio_device_model.hpp b/modules/gui/qt/util/audio_device_model.hpp
index 3b5fb6d419..b8e040562b 100644
--- a/modules/gui/qt/util/audio_device_model.hpp
+++ b/modules/gui/qt/util/audio_device_model.hpp
@@ -46,15 +46,15 @@ public:
     virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
 
     virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
-        
+
     void updateCurrent(QString current);
-        
+
     QHash<int, QByteArray> roleNames() const override;
 
 private:
     int m_inputs = 0;
-    char **m_names;
-    char **m_ids;
+    char **m_names = nullptr;
+    char **m_ids = nullptr;
     QString m_current;
     vlc_player_aout_listener_id* m_player_aout_listener = nullptr;
     audio_output_t* m_aout = nullptr;
-- 
2.25.0



More information about the vlc-devel mailing list