Browse Source

Merge branch 'jh/loose-object-dirs-creation-race' into maint

Two processes creating loose objects at the same time could have
failed unnecessarily when the name of their new objects started
with the same byte value, due to a race condition.

* jh/loose-object-dirs-creation-race:
  sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs
maint
Junio C Hamano 11 years ago
parent
commit
a5d56530e0
  1. 4
      sha1_file.c

4
sha1_file.c

@ -2860,7 +2860,9 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename) @@ -2860,7 +2860,9 @@ static int create_tmpfile(char *buffer, size_t bufsiz, const char *filename)
/* Make sure the directory exists */
memcpy(buffer, filename, dirlen);
buffer[dirlen-1] = 0;
if (mkdir(buffer, 0777) || adjust_shared_perm(buffer))
if (mkdir(buffer, 0777) && errno != EEXIST)
return -1;
if (adjust_shared_perm(buffer))
return -1;

/* Try again */

Loading…
Cancel
Save