From 147d86fc697d6c88be329c2ce4845a2b135dcf61 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Tue, 20 Jan 2015 12:31:24 -0600 Subject: [PATCH] diff: only compute patches when requested When we're called with no hunk or line callback, we don't need to do the hunk or line computation. --- src/diff_patch.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/diff_patch.c b/src/diff_patch.c index 317dbeabb..3129d06e1 100644 --- a/src/diff_patch.c +++ b/src/diff_patch.c @@ -284,11 +284,12 @@ int git_diff_foreach( if (git_diff_delta__should_skip(&diff->opts, patch.delta)) continue; - if ((error = diff_patch_init_from_diff(&patch, diff, idx)) < 0) - break; - - if (!(error = diff_patch_invoke_file_callback(&patch, &xo.output))) - error = diff_patch_generate(&patch, &xo.output); + if ((error = diff_patch_invoke_file_callback(&patch, &xo.output)) == 0) { + if (hunk_cb || data_cb) { + if ((error = diff_patch_init_from_diff(&patch, diff, idx)) == 0) + error = diff_patch_generate(&patch, &xo.output); + } + } git_patch_free(&patch);