summaryrefslogtreecommitdiff
path: root/diff-lib.c
diff options
context:
space:
mode:
authorDaniel Barkalow <barkalow@iabervon.org>2008-02-07 11:39:48 -0500
committerJunio C Hamano <gitster@pobox.com>2008-02-09 23:16:51 -0800
commit203a2fe117070964a5bf7cc940a742cad7a19fca (patch)
treefc0b78c0020f32ff1d55e31aca3ef4fba0a34574 /diff-lib.c
parent9cb76b8cdc8ac62a77080595f6443613fd64bab3 (diff)
downloadgit-203a2fe117070964a5bf7cc940a742cad7a19fca.tar.gz
Allow callers of unpack_trees() to handle failure
Return an error from unpack_trees() instead of calling die(), and exit with an error in read-tree, builtin-commit, and diff-lib. merge-recursive already expected an error return from unpack_trees, so it doesn't need to be changed. The merge function can return negative to abort. This will be used in builtin-checkout -m. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Diffstat (limited to 'diff-lib.c')
-rw-r--r--diff-lib.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/diff-lib.c b/diff-lib.c
index 03eaa7cef3..94b150e830 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -737,7 +737,8 @@ int run_diff_index(struct rev_info *revs, int cached)
opts.unpack_data = revs;
init_tree_desc(&t, tree->buffer, tree->size);
- unpack_trees(1, &t, &opts);
+ if (unpack_trees(1, &t, &opts))
+ exit(128);
diffcore_std(&revs->diffopt);
diff_flush(&revs->diffopt);
@@ -789,6 +790,7 @@ int do_diff_cache(const unsigned char *tree_sha1, struct diff_options *opt)
opts.unpack_data = &revs;
init_tree_desc(&t, tree->buffer, tree->size);
- unpack_trees(1, &t, &opts);
+ if (unpack_trees(1, &t, &opts))
+ exit(128);
return 0;
}