extcap: fix parameters save in preferences file
authorPascal Quantin <pascal.quantin@gmail.com>
Wed, 30 Aug 2017 13:24:49 +0000 (15:24 +0200)
committerAnders Broman <a.broman58@gmail.com>
Thu, 31 Aug 2017 04:34:39 +0000 (04:34 +0000)
Since g583150198b, extcap_arg structures holds a pointer to the current
preference value. So let's not update its value outside of the prefs API
otherwise the call to prefs_set_string_value() with pref_current done
afterwards will never notify the change and the updated value will not
be written in the preference file.
Moreover update ExtcapArgument::resetValue() method to have an empty
string instead of a NULL pointer. Otherwise prefs_set_string_value()
will not notify the change and save the restored default value in the
preference file either.

Change-Id: Ie70e79d471c75e25705c7654e420a7706ebc4032
Reviewed-on: https://code.wireshark.org/review/23308
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
extcap.c
extcap.h
ui/qt/extcap_argument.cpp
ui/qt/extcap_options_dialog.cpp

index 53bead8dd50f80adfde80731ed0be1548684b601..6bed5c45836c702c733a23c9da2f7f012aeeb2fd 100644 (file)
--- a/extcap.c
+++ b/extcap.c
@@ -605,16 +605,6 @@ void extcap_cleanup(void)
         g_hash_table_destroy(_tool_for_ifname);
 }
 
-void extcap_pref_store(extcap_arg *arg, const char *newval)
-{
-    if (arg && arg->pref_valptr != NULL)
-    {
-        g_free(*arg->pref_valptr);
-        *arg->pref_valptr = g_strdup(newval);
-    }
-
-}
-
 /**
  * Obtains a pointer which can store a value for the given preference name.
  * The preference name that can be passed to the prefs API is stored into
index 013ccdb4fd649441d6424cb97337b059c6be6c10..ac8993a2c030ec4b55b525e16c5db2bc262f58fe 100644 (file)
--- a/extcap.h
+++ b/extcap.h
@@ -152,9 +152,6 @@ extcap_if_cleanup(capture_options * capture_opts, gchar ** errormsg);
 struct preference *
 extcap_pref_for_argument(const gchar *ifname, struct _extcap_arg * arg);
 
-void
-extcap_pref_store(struct _extcap_arg * arg, const char * newval);
-
 /* Clean up global extcap stuff on program exit */
 void extcap_cleanup(void);
 
index 6a74cc7e07e2269fe9cefb6432f468552e852fb4..3e21a36fba90b182fe11af062180fa5e741d3009 100644 (file)
@@ -662,11 +662,9 @@ QString ExtcapArgument::prefValue()
 
 void ExtcapArgument::resetValue()
 {
-    // XXX consider using the preferences API which can store the default value
-    // and put that here instead of an empty value.
     if (_argument->pref_valptr) {
         g_free(*_argument->pref_valptr);
-        *_argument->pref_valptr = NULL;
+        *_argument->pref_valptr = g_strdup("");
     }
 }
 
index c70f5531bb04a7c377d493d5eb6d52811c441cda..946007df58f2511f80e061b1a400e7cf67a710ef 100644 (file)
@@ -494,9 +494,6 @@ void ExtcapOptionsDialog::storeValues()
         {
             gchar * val = g_strdup(value.length() == 0 ? " " : value.toStdString().c_str());
 
-            /* Setting the internally stored value for the preference to the new value */
-            extcap_pref_store((*iter)->argument(), val);
-
             g_hash_table_insert(entries, g_strdup(key.toStdString().c_str()), val);
         }
     }