1
0
mirror of https://github.com/git/git.git synced 2024-09-22 11:21:15 +02:00

Merge branch 'jk/maint-sha1-file-name-fix' into maint

* jk/maint-sha1-file-name-fix:
  remove over-eager caching in sha1_file_name
This commit is contained in:
Junio C Hamano 2010-06-21 05:40:41 -07:00
commit 951f92d2ab

View File

@ -102,20 +102,22 @@ static void fill_sha1_path(char *pathbuf, const unsigned char *sha1)
*/ */
char *sha1_file_name(const unsigned char *sha1) char *sha1_file_name(const unsigned char *sha1)
{ {
static char *name, *base; static char buf[PATH_MAX];
const char *objdir;
int len;
if (!base) { objdir = get_object_directory();
const char *sha1_file_directory = get_object_directory(); len = strlen(objdir);
int len = strlen(sha1_file_directory);
base = xmalloc(len + 60); /* '/' + sha1(2) + '/' + sha1(38) + '\0' */
memcpy(base, sha1_file_directory, len); if (len + 43 > PATH_MAX)
memset(base+len, 0, 60); die("insanely long object directory %s", objdir);
base[len] = '/'; memcpy(buf, objdir, len);
base[len+3] = '/'; buf[len] = '/';
name = base + len + 1; buf[len+3] = '/';
} buf[len+42] = '\0';
fill_sha1_path(name, sha1); fill_sha1_path(buf + len + 1, sha1);
return base; return buf;
} }
static char *sha1_get_pack_name(const unsigned char *sha1, static char *sha1_get_pack_name(const unsigned char *sha1,