Check 'GIT_MERGE_VERBOSITY' environment variable only once in init_merge_options(). Consequential call of getenv() may return NULL pointer. However the stored pointer to the obtained getenv() result may be invalidated by some other getenv() call as getenv() is not thread-safe. Signed-off-by: Andrey Okoshkin <a.okoshkin@xxxxxxxxxxx> Reviewed-by: Stefan Beller <sbeller@xxxxxxxxxx> --- Changes since the previous patch: * no actions are taken between the merge_verbosity assignment and check. merge-recursive.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/merge-recursive.c b/merge-recursive.c index 1494ffdb8..60084e3a0 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -2163,6 +2163,7 @@ static void merge_recursive_config(struct merge_options *o) void init_merge_options(struct merge_options *o) { + const char *merge_verbosity; memset(o, 0, sizeof(struct merge_options)); o->verbosity = 2; o->buffer_output = 1; @@ -2171,9 +2172,9 @@ void init_merge_options(struct merge_options *o) o->renormalize = 0; o->detect_rename = 1; merge_recursive_config(o); - if (getenv("GIT_MERGE_VERBOSITY")) - o->verbosity = - strtol(getenv("GIT_MERGE_VERBOSITY"), NULL, 10); + merge_verbosity = getenv("GIT_MERGE_VERBOSITY"); + if (merge_verbosity) + o->verbosity = strtol(merge_verbosity, NULL, 10); if (o->verbosity >= 5) o->buffer_output = 0; strbuf_init(&o->obuf, 0); -- 2.14.3