init: plug tiny one-time memory leak
The buffer used to construct paths like ".git/objects/info" and ".git/objects/pack" is allocated on the heap and never freed. So free it. While at it, factor out the relevant code into its own function and rename the sha1_dir variable to object_directory (to match the change in everyday usage after the renaming of SHA1_FILE_DIRECTORY in v0.99~603^2~7, 2005). Noticed by valgrind while setting up tests (in test-lib). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
95ae69b95b
commit
9173912be3
|
@ -294,11 +294,26 @@ static int create_default_files(const char *template_path)
|
||||||
return reinit;
|
return reinit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void create_object_directory(void)
|
||||||
|
{
|
||||||
|
const char *object_directory = get_object_directory();
|
||||||
|
int len = strlen(object_directory);
|
||||||
|
char *path = xmalloc(len + 40);
|
||||||
|
|
||||||
|
memcpy(path, object_directory, len);
|
||||||
|
|
||||||
|
safe_create_dir(object_directory, 1);
|
||||||
|
strcpy(path+len, "/pack");
|
||||||
|
safe_create_dir(path, 1);
|
||||||
|
strcpy(path+len, "/info");
|
||||||
|
safe_create_dir(path, 1);
|
||||||
|
|
||||||
|
free(path);
|
||||||
|
}
|
||||||
|
|
||||||
int init_db(const char *template_dir, unsigned int flags)
|
int init_db(const char *template_dir, unsigned int flags)
|
||||||
{
|
{
|
||||||
const char *sha1_dir;
|
int reinit;
|
||||||
char *path;
|
|
||||||
int len, reinit;
|
|
||||||
|
|
||||||
safe_create_dir(get_git_dir(), 0);
|
safe_create_dir(get_git_dir(), 0);
|
||||||
|
|
||||||
|
@ -313,16 +328,7 @@ int init_db(const char *template_dir, unsigned int flags)
|
||||||
|
|
||||||
reinit = create_default_files(template_dir);
|
reinit = create_default_files(template_dir);
|
||||||
|
|
||||||
sha1_dir = get_object_directory();
|
create_object_directory();
|
||||||
len = strlen(sha1_dir);
|
|
||||||
path = xmalloc(len + 40);
|
|
||||||
memcpy(path, sha1_dir, len);
|
|
||||||
|
|
||||||
safe_create_dir(sha1_dir, 1);
|
|
||||||
strcpy(path+len, "/pack");
|
|
||||||
safe_create_dir(path, 1);
|
|
||||||
strcpy(path+len, "/info");
|
|
||||||
safe_create_dir(path, 1);
|
|
||||||
|
|
||||||
if (shared_repository) {
|
if (shared_repository) {
|
||||||
char buf[10];
|
char buf[10];
|
||||||
|
|
Loading…
Reference in New Issue