mirror of
https://github.com/irssi/irssi.git
synced 2024-09-01 04:14:16 -04:00
Keep a copy of the strings coming from the config
The "HILIGHT_REC" structure used to keep a pointer to the "servertag" string, owned by the "CONFIG_NODE", causing a double-free.
This commit is contained in:
parent
7e619ed990
commit
66b2c9bc91
@ -106,6 +106,7 @@ static void hilight_destroy(HILIGHT_REC *rec)
|
||||
if (rec->channels != NULL) g_strfreev(rec->channels);
|
||||
g_free_not_null(rec->color);
|
||||
g_free_not_null(rec->act_color);
|
||||
g_free_not_null(rec->servertag);
|
||||
g_free(rec->text);
|
||||
g_free(rec);
|
||||
}
|
||||
@ -424,7 +425,7 @@ static void read_hilight_config(void)
|
||||
CONFIG_NODE *node;
|
||||
HILIGHT_REC *rec;
|
||||
GSList *tmp;
|
||||
char *text, *color;
|
||||
char *text, *color, *servertag;
|
||||
|
||||
hilights_destroy_all();
|
||||
|
||||
@ -467,7 +468,9 @@ static void read_hilight_config(void)
|
||||
rec->nickmask = config_node_get_bool(node, "mask", FALSE);
|
||||
rec->fullword = config_node_get_bool(node, "fullword", FALSE);
|
||||
rec->regexp = config_node_get_bool(node, "regexp", FALSE);
|
||||
rec->servertag = config_node_get_str(node, "servertag", NULL);
|
||||
servertag = config_node_get_str(node, "servertag", NULL);
|
||||
rec->servertag = servertag == NULL || *servertag == '\0' ? NULL :
|
||||
g_strdup(servertag);
|
||||
hilight_init_rec(rec);
|
||||
|
||||
node = iconfig_node_section(node, "channels", -1);
|
||||
|
Loading…
Reference in New Issue
Block a user