summaryrefslogtreecommitdiff
path: root/src/diff_generate.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2016-11-15 14:36:33 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2016-11-15 14:36:33 +0100
commit060649e0f103ff37924140bb6584be9843f666e9 (patch)
tree57717b2214c27a67a6fffba2c9facf5d08220b85 /src/diff_generate.c
parent49656a5b6beff3b2e91ca1894bb3d72671bb4d8f (diff)
downloadlibgit2-cmn/cancellation.tar.gz
Add minimal cancellation to diffcmn/cancellation
Diffstat (limited to 'src/diff_generate.c')
-rw-r--r--src/diff_generate.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/diff_generate.c b/src/diff_generate.c
index 06f9b19c7..4858c43c0 100644
--- a/src/diff_generate.c
+++ b/src/diff_generate.c
@@ -16,6 +16,7 @@
#include "index.h"
#include "odb.h"
#include "submodule.h"
+#include "cancellation.h"
#define DIFF_FLAG_IS_SET(DIFF,FLAG) \
(((DIFF)->base.opts.flags & (FLAG)) != 0)
@@ -1212,6 +1213,12 @@ int git_diff__from_iterators(
while (!error && (info.oitem || info.nitem)) {
int cmp;
+ if (git_cancellation__canceled()) {
+ giterr_set(GITERR_CANCELLATION, "the operation was canceled");
+ error = GIT_ECANCELLED;
+ goto cleanup;
+ }
+
/* report progress */
if (opts && opts->progress_cb) {
if ((error = opts->progress_cb(&diff->base,