diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2019-09-09 13:56:15 +0200 |
---|---|---|
committer | Johannes Schindelin <johannes.schindelin@gmx.de> | 2019-12-05 15:37:06 +0100 |
commit | cc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec (patch) | |
tree | 34d2e583a0fca8acff10963e52819f3c019f968f | |
parent | t6130/t9350: prepare for stringent Win32 path validation (diff) | |
download | tgif-cc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec.tar.xz |
unpack-trees: let merged_entry() pass through do_add_entry()'s errors
A `git clone` will end with exit code 0 when `merged_entry()` returns a
positive value during a call of `unpack_trees()` to `traverse_trees()`.
The reason is that `unpack_trees()` will interpret a positive value not
to be an error.
The problem is, however, that `add_index_entry()` (which is called by
`merged_entry()` can report an error, and we really should fail the
entire clone in such a case.
Let's fix this problem, in preparation for a Windows-specific patch
disallowing `mkdir()` with directory names that contain a trailing space
(which is illegal on NTFS): we want `git clone` to abort when a path
cannot be checked out due to that condition.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
-rw-r--r-- | unpack-trees.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 862cfce661..649d11855e 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1821,7 +1821,8 @@ static int merged_entry(const struct cache_entry *ce, invalidate_ce_path(old, o); } - do_add_entry(o, merge, update, CE_STAGEMASK); + if (do_add_entry(o, merge, update, CE_STAGEMASK) < 0) + return -1; return 1; } |