The in-core variables to match $GIT_DIR, $GIT_OBJECT_DIRECTORY, etc come from three sources: a) environment variables [getenv("GIT_INDEX_FILE")] b) computation [git_pathdup("objects")] c) static strings [".git"] Only in case (b) are they malloc()'d; even in that case, it would not make sense to free the values until program termination, when _exit() takes care of freeing all memory already. So mark the allocations in case (b) as permanent so no one wastes time trying to fix the leak. Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- environment.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/environment.c b/environment.c index de5581f..9bd18c7 100644 --- a/environment.c +++ b/environment.c @@ -89,23 +89,23 @@ static void setup_git_env(void) git_dir = getenv(GIT_DIR_ENVIRONMENT); if (!git_dir) { git_dir = read_gitfile_gently(DEFAULT_GIT_DIR_ENVIRONMENT); - git_dir = git_dir ? xstrdup(git_dir) : NULL; + git_dir = git_dir ? strdup_permanent(git_dir) : NULL; } if (!git_dir) git_dir = DEFAULT_GIT_DIR_ENVIRONMENT; git_object_dir = getenv(DB_ENVIRONMENT); if (!git_object_dir) { - git_object_dir = xmalloc(strlen(git_dir) + 9); + git_object_dir = alloc_permanent(strlen(git_dir) + 9); sprintf(git_object_dir, "%s/objects", git_dir); } git_index_file = getenv(INDEX_ENVIRONMENT); if (!git_index_file) { - git_index_file = xmalloc(strlen(git_dir) + 7); + git_index_file = alloc_permanent(strlen(git_dir) + 7); sprintf(git_index_file, "%s/index", git_dir); } git_graft_file = getenv(GRAFT_ENVIRONMENT); if (!git_graft_file) - git_graft_file = git_pathdup("info/grafts"); + git_graft_file = git_pathdup_permanent("info/grafts"); if (getenv(NO_REPLACE_OBJECTS_ENVIRONMENT)) read_replace_refs = 0; } -- 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html