aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--diff-lib.c4
-rw-r--r--revision.c1
-rw-r--r--wt-status.c6
3 files changed, 8 insertions, 3 deletions
diff --git a/diff-lib.c b/diff-lib.c
index 298265e5b5..7eb66a417a 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -651,6 +651,7 @@ int index_differs_from(struct repository *r,
{
struct rev_info rev;
struct setup_revision_opt opt;
+ unsigned has_changes;
repo_init_revisions(r, &rev, NULL);
memset(&opt, 0, sizeof(opt));
@@ -662,8 +663,9 @@ int index_differs_from(struct repository *r,
diff_flags_or(&rev.diffopt.flags, flags);
rev.diffopt.ita_invisible_in_index = ita_invisible_in_index;
run_diff_index(&rev, 1);
+ has_changes = rev.diffopt.flags.has_changes;
release_revisions(&rev);
- return (rev.diffopt.flags.has_changes != 0);
+ return (has_changes != 0);
}
static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data)
diff --git a/revision.c b/revision.c
index 0107ac1077..58d6212221 100644
--- a/revision.c
+++ b/revision.c
@@ -2956,6 +2956,7 @@ void release_revisions(struct rev_info *revs)
date_mode_release(&revs->date_mode);
release_revisions_mailmap(revs->mailmap);
free_grep_patterns(&revs->grep_filter);
+ /* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
diff_free(&revs->pruning);
reflog_walk_info_release(revs->reflog_info);
release_revisions_topo_walk_info(revs->topo_walk_info);
diff --git a/wt-status.c b/wt-status.c
index 61e0c1022f..102d904adc 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -2545,8 +2545,9 @@ int has_unstaged_changes(struct repository *r, int ignore_submodules)
rev_info.diffopt.flags.quick = 1;
diff_setup_done(&rev_info.diffopt);
result = run_diff_files(&rev_info, 0);
+ result = diff_result_code(&rev_info.diffopt, result);
release_revisions(&rev_info);
- return diff_result_code(&rev_info.diffopt, result);
+ return result;
}
/**
@@ -2578,8 +2579,9 @@ int has_uncommitted_changes(struct repository *r,
diff_setup_done(&rev_info.diffopt);
result = run_diff_index(&rev_info, 1);
+ result = diff_result_code(&rev_info.diffopt, result);
release_revisions(&rev_info);
- return diff_result_code(&rev_info.diffopt, result);
+ return result;
}
/**