diff options
| author | Junio C Hamano <gitster@pobox.com> | 2015-09-04 10:25:23 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2015-09-04 10:25:23 -0700 |
| commit | f54cb059b18e704d8b51d0cd4736344422650d6f (patch) | |
| tree | 324187d0682f989593a532d231acf8472d4d2f2b /unpack-trees.c | |
| parent | Git 2.2.2 (diff) | |
| parent | show-branch: use a strbuf for reflog descriptions (diff) | |
| download | git-f54cb059b18e704d8b51d0cd4736344422650d6f.tar.gz git-f54cb059b18e704d8b51d0cd4736344422650d6f.zip | |
Merge branch 'jk/long-paths' into maint-2.2
Diffstat (limited to 'unpack-trees.c')
| -rw-r--r-- | unpack-trees.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 256df47b35..4a6347899c 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1432,15 +1432,18 @@ static int verify_absent_1(const struct cache_entry *ce, if (!len) return 0; else if (len > 0) { - char path[PATH_MAX + 1]; - memcpy(path, ce->name, len); - path[len] = 0; + char *path; + int ret; + + path = xmemdupz(ce->name, len); if (lstat(path, &st)) - return error("cannot stat '%s': %s", path, + ret = error("cannot stat '%s': %s", path, strerror(errno)); - - return check_ok_to_remove(path, len, DT_UNKNOWN, NULL, &st, - error_type, o); + else + ret = check_ok_to_remove(path, len, DT_UNKNOWN, NULL, + &st, error_type, o); + free(path); + return ret; } else if (lstat(ce->name, &st)) { if (errno != ENOENT) return error("cannot stat '%s': %s", ce->name, |
