Use strdup on gradient colours as well

Fixes bug introduced in #310
master
Quantum 6 years ago
parent 716fc16e40
commit 18fe85aef8
  1. 13
      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));

Loading…
Cancel
Save