summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2016-09-02 08:50:08 -0500
committerGitHub <noreply@github.com>2016-09-02 08:50:08 -0500
commitce54e77c70b5d0429a7d8a18dd31696f668ef3d0 (patch)
tree4664eb127f56002a6d54e82b8c8184a5ed46da9a
parent40b08124f26e6a1328fa35fc1c0f69911d31a2d8 (diff)
parent4b34f687bd3382fc94012fa221885028f4cfded5 (diff)
downloadlibgit2-ce54e77c70b5d0429a7d8a18dd31696f668ef3d0.tar.gz
Merge pull request #3922 from pks-t/pks/diff-only-load-binaries-when-requested
patch_generate: only calculate binary diffs if requested
-rw-r--r--src/patch_generate.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/patch_generate.c b/src/patch_generate.c
index 927786a43..67a13b706 100644
--- a/src/patch_generate.c
+++ b/src/patch_generate.c
@@ -349,20 +349,24 @@ static int diff_binary(git_patch_generated_output *output, git_patch_generated *
new_len = patch->nfile.map.len;
int error;
- /* Create the old->new delta (as the "new" side of the patch),
- * and the new->old delta (as the "old" side)
- */
- if ((error = create_binary(&binary.old_file.type,
- (char **)&binary.old_file.data,
- &binary.old_file.datalen,
- &binary.old_file.inflatedlen,
- new_data, new_len, old_data, old_len)) < 0 ||
- (error = create_binary(&binary.new_file.type,
- (char **)&binary.new_file.data,
- &binary.new_file.datalen,
- &binary.new_file.inflatedlen,
- old_data, old_len, new_data, new_len)) < 0)
- return error;
+ /* Only load contents if the user actually wants to diff
+ * binary files. */
+ if (patch->base.diff_opts.flags & GIT_DIFF_SHOW_BINARY) {
+ /* Create the old->new delta (as the "new" side of the patch),
+ * and the new->old delta (as the "old" side)
+ */
+ if ((error = create_binary(&binary.old_file.type,
+ (char **)&binary.old_file.data,
+ &binary.old_file.datalen,
+ &binary.old_file.inflatedlen,
+ new_data, new_len, old_data, old_len)) < 0 ||
+ (error = create_binary(&binary.new_file.type,
+ (char **)&binary.new_file.data,
+ &binary.new_file.datalen,
+ &binary.new_file.inflatedlen,
+ old_data, old_len, new_data, new_len)) < 0)
+ return error;
+ }
error = giterr_set_after_callback_function(
output->binary_cb(patch->base.delta, &binary, output->payload),