diff options
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/sha1_file.c b/sha1_file.c index ed52d71a1b..842a6f3ae8 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -126,22 +126,16 @@ static void fill_sha1_path(char *pathbuf, const unsigned char *sha1) char *sha1_file_name(const unsigned char *sha1) { static char *name, *base; - static const char *last_objdir; - const char *sha1_file_directory = get_object_directory(); - if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) { + if (!base) { + const char *sha1_file_directory = get_object_directory(); int len = strlen(sha1_file_directory); - if (base) - free(base); base = xmalloc(len + 60); memcpy(base, sha1_file_directory, len); memset(base+len, 0, 60); base[len] = '/'; base[len+3] = '/'; name = base + len + 1; - if (last_objdir) - free((char *) last_objdir); - last_objdir = strdup(sha1_file_directory); } fill_sha1_path(name, sha1); return base; @@ -151,20 +145,14 @@ char *sha1_pack_name(const unsigned char *sha1) { static const char hex[] = "0123456789abcdef"; static char *name, *base, *buf; - static const char *last_objdir; - const char *sha1_file_directory = get_object_directory(); int i; - if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) { + if (!base) { + const char *sha1_file_directory = get_object_directory(); int len = strlen(sha1_file_directory); - if (base) - free(base); base = xmalloc(len + 60); sprintf(base, "%s/pack/pack-1234567890123456789012345678901234567890.pack", sha1_file_directory); name = base + len + 11; - if (last_objdir) - free((char *) last_objdir); - last_objdir = strdup(sha1_file_directory); } buf = name; @@ -182,20 +170,14 @@ char *sha1_pack_index_name(const unsigned char *sha1) { static const char hex[] = "0123456789abcdef"; static char *name, *base, *buf; - static const char *last_objdir; - const char *sha1_file_directory = get_object_directory(); int i; - if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) { + if (!base) { + const char *sha1_file_directory = get_object_directory(); int len = strlen(sha1_file_directory); - if (base) - free(base); base = xmalloc(len + 60); sprintf(base, "%s/pack/pack-1234567890123456789012345678901234567890.idx", sha1_file_directory); name = base + len + 11; - if (last_objdir) - free((char *) last_objdir); - last_objdir = strdup(sha1_file_directory); } buf = name; |