Skip to content

Commit

Permalink
Merge branch 'jk/maint-sha1-file-name-fix' into maint
Browse files Browse the repository at this point in the history
* jk/maint-sha1-file-name-fix:
  remove over-eager caching in sha1_file_name
  • Loading branch information
Junio C Hamano committed Jun 21, 2010
2 parents d0780b0 + 560fb6a commit 951f92d
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions sha1_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,20 +102,22 @@ static void fill_sha1_path(char *pathbuf, 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) {
const char *sha1_file_directory = get_object_directory();
int len = strlen(sha1_file_directory);
base = xmalloc(len + 60);
memcpy(base, sha1_file_directory, len);
memset(base+len, 0, 60);
base[len] = '/';
base[len+3] = '/';
name = base + len + 1;
}
fill_sha1_path(name, sha1);
return base;
objdir = get_object_directory();
len = strlen(objdir);

/* '/' + sha1(2) + '/' + sha1(38) + '\0' */
if (len + 43 > PATH_MAX)
die("insanely long object directory %s", objdir);
memcpy(buf, objdir, len);
buf[len] = '/';
buf[len+3] = '/';
buf[len+42] = '\0';
fill_sha1_path(buf + len + 1, sha1);
return buf;
}

static char *sha1_get_pack_name(const unsigned char *sha1,
Expand Down

0 comments on commit 951f92d

Please sign in to comment.