Squelch some casting-away-const warnings.
Code *outside* this file isn't allowed to free or overwrite the structure members in question; code *inside* this file only does so when it's appropriate, so we just cast away the warnings. Use free_string_like_preference() in one place where the code was duplicated; add a pref_set_string_like_pref_value() routine to encapsulate the freeing. Remove some unnecessary casts. Change-Id: Ifc30a919cbd331367f5932ad23c3a1ed7cd4579f Reviewed-on: https://code.wireshark.org/review/26352 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
e5cc633ee4
commit
e7cf995b1e
32
epan/prefs.c
32
epan/prefs.c
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "ws_diag_control.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -319,7 +321,9 @@ prefs_init(void)
|
||||||
static void
|
static void
|
||||||
free_string_like_preference(pref_t *pref)
|
free_string_like_preference(pref_t *pref)
|
||||||
{
|
{
|
||||||
g_free(*pref->varp.string);
|
DIAG_OFF(cast-qual)
|
||||||
|
g_free((char *)*pref->varp.string);
|
||||||
|
DIAG_ON(cast-qual)
|
||||||
*pref->varp.string = NULL;
|
*pref->varp.string = NULL;
|
||||||
g_free(pref->default_val.string);
|
g_free(pref->default_val.string);
|
||||||
pref->default_val.string = NULL;
|
pref->default_val.string = NULL;
|
||||||
|
@ -347,10 +351,7 @@ free_pref(gpointer data, gpointer user_data _U_)
|
||||||
case PREF_SAVE_FILENAME:
|
case PREF_SAVE_FILENAME:
|
||||||
case PREF_OPEN_FILENAME:
|
case PREF_OPEN_FILENAME:
|
||||||
case PREF_DIRNAME:
|
case PREF_DIRNAME:
|
||||||
g_free(*pref->varp.string);
|
free_string_like_preference(pref);
|
||||||
*pref->varp.string = NULL;
|
|
||||||
g_free(pref->default_val.string);
|
|
||||||
pref->default_val.string = NULL;
|
|
||||||
break;
|
break;
|
||||||
case PREF_RANGE:
|
case PREF_RANGE:
|
||||||
case PREF_DECODE_AS_RANGE:
|
case PREF_DECODE_AS_RANGE:
|
||||||
|
@ -1381,6 +1382,18 @@ register_string_like_preference(module_t *module, const char *name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assign to a string preference.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
pref_set_string_like_pref_value(pref_t *pref, const gchar *value)
|
||||||
|
{
|
||||||
|
DIAG_OFF(cast-qual)
|
||||||
|
g_free((void *)*pref->varp.string);
|
||||||
|
DIAG_ON(cast-qual)
|
||||||
|
*pref->varp.string = g_strdup(value);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For use by UI code that sets preferences.
|
* For use by UI code that sets preferences.
|
||||||
*/
|
*/
|
||||||
|
@ -1417,11 +1430,10 @@ prefs_set_string_value(pref_t *pref, const char* value, pref_source_t source)
|
||||||
if (*pref->varp.string) {
|
if (*pref->varp.string) {
|
||||||
if (strcmp(*pref->varp.string, value) != 0) {
|
if (strcmp(*pref->varp.string, value) != 0) {
|
||||||
changed = prefs_get_effect_flags(pref);
|
changed = prefs_get_effect_flags(pref);
|
||||||
g_free(*pref->varp.string);
|
pref_set_string_like_pref_value(pref, value);
|
||||||
*pref->varp.string = g_strdup(value);
|
|
||||||
}
|
}
|
||||||
} else if (value) {
|
} else if (value) {
|
||||||
*pref->varp.string = g_strdup(value);
|
pref_set_string_like_pref_value(pref, value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5249,7 +5261,7 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
|
||||||
if (p == value || *p != '\0')
|
if (p == value || *p != '\0')
|
||||||
return FALSE; /* number was bad */
|
return FALSE; /* number was bad */
|
||||||
|
|
||||||
module = prefs_find_module((gchar*)port_prefs[i].module_name);
|
module = prefs_find_module(port_prefs[i].module_name);
|
||||||
pref = prefs_find_preference(module, port_prefs[i].table_name);
|
pref = prefs_find_preference(module, port_prefs[i].table_name);
|
||||||
if (pref != NULL)
|
if (pref != NULL)
|
||||||
{
|
{
|
||||||
|
@ -5294,7 +5306,7 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
|
|
||||||
module = prefs_find_module((gchar*)port_range_prefs[i].module_name);
|
module = prefs_find_module(port_range_prefs[i].module_name);
|
||||||
pref = prefs_find_preference(module, port_range_prefs[i].table_name);
|
pref = prefs_find_preference(module, port_range_prefs[i].table_name);
|
||||||
if (pref != NULL)
|
if (pref != NULL)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue