path: root/unpack-trees.c
diff options
authorJohannes Schindelin <>2019-09-09 11:56:15 (GMT)
committerJohannes Schindelin <>2019-12-05 14:37:06 (GMT)
commitcc756edda63769cf6d7acc99e6ad3a9cbb5dc3ec (patch)
tree34d2e583a0fca8acff10963e52819f3c019f968f /unpack-trees.c
parent35edce205615c553fdc49bcf10b0c91f061c56c9 (diff)
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 <>
Diffstat (limited to 'unpack-trees.c')
1 files changed, 2 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index 862cfce..649d118 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;