Qt: fix memleaks in protocol preferences menu
authorPeter Wu <peter@lekensteyn.nl>
Sat, 26 May 2018 12:07:06 +0000 (14:07 +0200)
committerAnders Broman <a.broman58@gmail.com>
Wed, 30 May 2018 08:19:15 +0000 (08:19 +0000)
Reported by ASAN.

Change-Id: I0e7578d6583dc11312d95108331b6a743d7d5514
Reviewed-on: https://code.wireshark.org/review/27832
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
ui/qt/protocol_preferences_menu.cpp

index 4a51057d06e6af5c784e9771f2db505d9c0102b6..e64080b6a22288d97e3cc4fa24998cd6aefb4b2f 100644 (file)
@@ -33,8 +33,8 @@
 class BoolPreferenceAction : public QAction
 {
 public:
-    BoolPreferenceAction(pref_t *pref) :
-        QAction(NULL),
+    BoolPreferenceAction(pref_t *pref, QObject *parent=0) :
+        QAction(parent),
         pref_(pref)
     {
         setText(prefs_get_title(pref_));
@@ -53,8 +53,8 @@ private:
 class EnumPreferenceAction : public QAction
 {
 public:
-    EnumPreferenceAction(pref_t *pref, const char *title, int enumval, QActionGroup *ag) :
-        QAction(NULL),
+    EnumPreferenceAction(pref_t *pref, const char *title, int enumval, QActionGroup *ag, QObject *parent=0) :
+        QAction(parent),
         pref_(pref),
         enumval_(enumval)
     {
@@ -75,8 +75,8 @@ private:
 class UatPreferenceAction : public QAction
 {
 public:
-    UatPreferenceAction(pref_t *pref) :
-        QAction(NULL),
+    UatPreferenceAction(pref_t *pref, QObject *parent=0) :
+        QAction(parent),
         pref_(pref)
     {
         setText(QString("%1" UTF8_HORIZONTAL_ELLIPSIS).arg(prefs_get_title(pref_)));
@@ -98,8 +98,8 @@ private:
 class EditorPreferenceAction : public QAction
 {
 public:
-    EditorPreferenceAction(pref_t *pref) :
-        QAction(NULL),
+    EditorPreferenceAction(pref_t *pref, QObject *parent=0) :
+        QAction(parent),
         pref_(pref)
     {
         QString title = prefs_get_title(pref_);
@@ -191,7 +191,7 @@ void ProtocolPreferencesMenu::addMenuItem(preference *pref)
     switch (prefs_get_type(pref)) {
     case PREF_BOOL:
     {
-        BoolPreferenceAction *bpa = new BoolPreferenceAction(pref);
+        BoolPreferenceAction *bpa = new BoolPreferenceAction(pref, this);
         addAction(bpa);
         connect(bpa, SIGNAL(triggered(bool)), this, SLOT(boolPreferenceTriggered()));
         break;
@@ -203,7 +203,7 @@ void ProtocolPreferencesMenu::addMenuItem(preference *pref)
         if (enum_valp && enum_valp->name) {
             QActionGroup *ag = new QActionGroup(this);
             while (enum_valp->name) {
-                EnumPreferenceAction *epa = new EnumPreferenceAction(pref, enum_valp->description, enum_valp->value, ag);
+                EnumPreferenceAction *epa = new EnumPreferenceAction(pref, enum_valp->description, enum_valp->value, ag, this);
                 if (prefs_get_enum_value(pref, pref_current) == enum_valp->value) {
                     epa->setChecked(true);
                 }
@@ -220,14 +220,14 @@ void ProtocolPreferencesMenu::addMenuItem(preference *pref)
     case PREF_DECODE_AS_UINT:
     case PREF_DECODE_AS_RANGE:
     {
-        EditorPreferenceAction *epa = new EditorPreferenceAction(pref);
+        EditorPreferenceAction *epa = new EditorPreferenceAction(pref, this);
         addAction(epa);
         connect(epa, SIGNAL(triggered(bool)), this, SLOT(editorPreferenceTriggered()));
         break;
     }
     case PREF_UAT:
     {
-        UatPreferenceAction *upa = new UatPreferenceAction(pref);
+        UatPreferenceAction *upa = new UatPreferenceAction(pref, this);
         addAction(upa);
         connect(upa, SIGNAL(triggered(bool)), this, SLOT(uatPreferenceTriggered()));
         break;