diff options
author | Edward Thomson <ethomson@github.com> | 2016-09-02 08:50:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-02 08:50:08 -0500 |
commit | ce54e77c70b5d0429a7d8a18dd31696f668ef3d0 (patch) | |
tree | 4664eb127f56002a6d54e82b8c8184a5ed46da9a | |
parent | 40b08124f26e6a1328fa35fc1c0f69911d31a2d8 (diff) | |
parent | 4b34f687bd3382fc94012fa221885028f4cfded5 (diff) | |
download | libgit2-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.c | 32 |
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), |