From 32a3de7d5b290a61a6debdf363a0d87b2d4a5bd9 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 8 Oct 2015 19:01:11 +0200 Subject: [PATCH] Detect more errors when saving configuration files --- src/config.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index 76c86dc..2a7f169 100644 --- a/src/config.c +++ b/src/config.c @@ -220,6 +220,7 @@ int config_load(Config * config, char const * filename) FILE * fp; String * section = NULL; String * variable = NULL; + String * value = NULL; int c; String * str; @@ -245,14 +246,16 @@ int config_load(Config * config, char const * filename) variable = str; if((str = _load_value(fp)) == NULL) break; - /* XXX optimize string alloc/free, and may fail */ - config_set(config, section, variable, str); - string_delete(str); + string_delete(value); + value = str; + if(config_set(config, section, variable, value) != 0) + break; } else if(c != '\n') break; string_delete(section); string_delete(variable); + string_delete(value); if(!feof(fp)) ret = error_set_code(1, "%s: %s%zd", filename, "Syntax error" " at line ", line);