Detect more errors when saving configuration files
This commit is contained in:
parent
cf0428111a
commit
32a3de7d5b
|
@ -220,6 +220,7 @@ int config_load(Config * config, char const * filename)
|
||||||
FILE * fp;
|
FILE * fp;
|
||||||
String * section = NULL;
|
String * section = NULL;
|
||||||
String * variable = NULL;
|
String * variable = NULL;
|
||||||
|
String * value = NULL;
|
||||||
int c;
|
int c;
|
||||||
String * str;
|
String * str;
|
||||||
|
|
||||||
|
@ -245,14 +246,16 @@ int config_load(Config * config, char const * filename)
|
||||||
variable = str;
|
variable = str;
|
||||||
if((str = _load_value(fp)) == NULL)
|
if((str = _load_value(fp)) == NULL)
|
||||||
break;
|
break;
|
||||||
/* XXX optimize string alloc/free, and may fail */
|
string_delete(value);
|
||||||
config_set(config, section, variable, str);
|
value = str;
|
||||||
string_delete(str);
|
if(config_set(config, section, variable, value) != 0)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if(c != '\n')
|
else if(c != '\n')
|
||||||
break;
|
break;
|
||||||
string_delete(section);
|
string_delete(section);
|
||||||
string_delete(variable);
|
string_delete(variable);
|
||||||
|
string_delete(value);
|
||||||
if(!feof(fp))
|
if(!feof(fp))
|
||||||
ret = error_set_code(1, "%s: %s%zd", filename, "Syntax error"
|
ret = error_set_code(1, "%s: %s%zd", filename, "Syntax error"
|
||||||
" at line ", line);
|
" at line ", line);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user