diff --git a/config.c b/config.c index 469420a..71ad749 100644 --- a/config.c +++ b/config.c @@ -346,11 +346,18 @@ bool validate_config(char supportedInput[255], void *params, void *err) { bool load_colors(struct config_params *p, dictionary *ini, void *err) { struct error_s *error = (struct error_s *)err; - p->color = (char *)iniparser_getstring(ini, "color:foreground", "default"); - p->bcolor = (char *)iniparser_getstring(ini, "color:background", "default"); + + free(p->color); + free(p->bcolor); + + p->color = strdup(iniparser_getstring(ini, "color:foreground", "default")); + p->bcolor = strdup(iniparser_getstring(ini, "color:background", "default")); p->gradient = iniparser_getint(ini, "color:gradient", 0); if (p->gradient) { + for (int i = 0; i < p->gradient_count; ++i) { + free(p->gradient_colors[i]); + } p->gradient_count = iniparser_getint(ini, "color:gradient_count", 2); if (p->gradient_count < 2) { write_errorf(error, "\nAtleast two colors must be given as gradient!\n"); @@ -364,7 +371,7 @@ bool load_colors(struct config_params *p, dictionary *ini, void *err) { for (int i = 0; i < p->gradient_count; i++) { char ini_config[32]; sprintf(ini_config, "color:gradient_color_%d", (i + 1)); - p->gradient_colors[i] = (char *)iniparser_getstring(ini, ini_config, NULL); + p->gradient_colors[i] = strdup(iniparser_getstring(ini, ini_config, NULL)); if (p->gradient_colors[i] == NULL) { write_errorf(error, "\nGradient color not specified : gradient_color_%d\n", (i + 1));