Merge branch 'rs/apply-lift-path-length-limit'

"git apply" has been updated to lift the hardcoded pathname length
limit, which in turn allowed a mksnpath() function that is no
longer used.

* rs/apply-lift-path-length-limit:
  path: remove mksnpath()
  apply: avoid fixed-size buffer in create_one_file()
This commit is contained in:
Junio C Hamano
2024-04-15 14:11:42 -07:00
4 changed files with 9 additions and 30 deletions

15
apply.c
View File

@@ -4448,6 +4448,7 @@ static int create_one_file(struct apply_state *state,
const char *buf,
unsigned long size)
{
char *newpath = NULL;
int res;
if (state->cached)
@@ -4509,24 +4510,26 @@ static int create_one_file(struct apply_state *state,
unsigned int nr = getpid();
for (;;) {
char newpath[PATH_MAX];
mksnpath(newpath, sizeof(newpath), "%s~%u", path, nr);
newpath = mkpathdup("%s~%u", path, nr);
res = try_create_file(state, newpath, mode, buf, size);
if (res < 0)
return -1;
goto out;
if (!res) {
if (!rename(newpath, path))
return 0;
goto out;
unlink_or_warn(newpath);
break;
}
if (errno != EEXIST)
break;
++nr;
FREE_AND_NULL(newpath);
}
}
return error_errno(_("unable to write file '%s' mode %o"),
path, mode);
res = error_errno(_("unable to write file '%s' mode %o"), path, mode);
out:
free(newpath);
return res;
}
static int add_conflicted_stages_file(struct apply_state *state,