diff --git a/diff-lib.c b/diff-lib.c
index fd61acbdce8c65f5146b15af0ab322501f271794..b3797592c63a86b46a3af0d875b6fe04ea43f536 100644 (file)
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -434,8 +434,13 @@ static int oneway_diff(struct cache_entry **src, struct unpack_trees_options *o)
if (tree == o->df_conflict_entry)
tree = NULL;
- if (ce_path_match(idx ? idx : tree, &revs->prune_data))
+ if (ce_path_match(idx ? idx : tree, &revs->prune_data)) {
do_oneway_diff(o, idx, tree);
+ if (diff_can_quit_early(&revs->diffopt)) {
+ o->exiting_early = 1;
+ return -1;
+ }
+ }
return 0;
}