mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
git_config_parse_parameter: refactor cleanup code
We have several exits from the function, each of which has to do some cleanup. Let's consolidate these in an "out" label we can jump to. This doesn't save us much now, but it will help as we add more things that need cleanup. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c72ee44bf4
commit
a77d6db69b
13
config.c
13
config.c
@ -205,6 +205,7 @@ int git_config_parse_parameter(const char *text,
|
|||||||
int git_config_from_parameters(config_fn_t fn, void *data)
|
int git_config_from_parameters(config_fn_t fn, void *data)
|
||||||
{
|
{
|
||||||
const char *env = getenv(CONFIG_DATA_ENVIRONMENT);
|
const char *env = getenv(CONFIG_DATA_ENVIRONMENT);
|
||||||
|
int ret = 0;
|
||||||
char *envw;
|
char *envw;
|
||||||
const char **argv = NULL;
|
const char **argv = NULL;
|
||||||
int nr = 0, alloc = 0;
|
int nr = 0, alloc = 0;
|
||||||
@ -216,21 +217,21 @@ int git_config_from_parameters(config_fn_t fn, void *data)
|
|||||||
envw = xstrdup(env);
|
envw = xstrdup(env);
|
||||||
|
|
||||||
if (sq_dequote_to_argv(envw, &argv, &nr, &alloc) < 0) {
|
if (sq_dequote_to_argv(envw, &argv, &nr, &alloc) < 0) {
|
||||||
free(envw);
|
ret = error("bogus format in " CONFIG_DATA_ENVIRONMENT);
|
||||||
return error("bogus format in " CONFIG_DATA_ENVIRONMENT);
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < nr; i++) {
|
for (i = 0; i < nr; i++) {
|
||||||
if (git_config_parse_parameter(argv[i], fn, data) < 0) {
|
if (git_config_parse_parameter(argv[i], fn, data) < 0) {
|
||||||
free(argv);
|
ret = -1;
|
||||||
free(envw);
|
goto out;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
free(argv);
|
free(argv);
|
||||||
free(envw);
|
free(envw);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_next_char(void)
|
static int get_next_char(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user