]> git.ipfire.org Git - thirdparty/git.git/blobdiff - diff.h
Merge branch 'ab/detox-gettext-tests'
[thirdparty/git.git] / diff.h
diff --git a/diff.h b/diff.h
index 9665e220063cd9543528c64b17f57dc761bad028..527fb56d8517deab8eb9125c3a00971f58707630 100644 (file)
--- a/diff.h
+++ b/diff.h
  * - Once you finish feeding the pairs of files, call `diffcore_std()`.
  * This will tell the diffcore library to go ahead and do its work.
  *
- * - Calling `diff_flush()` will produce the output.
+ * - Calling `diff_flush()` will produce the output, it will call
+ *   `diff_free()` to free any resources, e.g. those allocated in
+ *   `diff_opt_parse()`.
+ *
+ * - Set `.no_free = 1` before calling `diff_flush()` to defer the
+ *   freeing of allocated memory in diff_options. This is useful when
+ *   `diff_flush()` is being called in a loop, rather than as a
+ *   one-off. When setting `.no_free = 1` you must ensure that
+ *   `diff_free()` is called at the end, either by flipping the flag
+ *   before the last `diff_flush()` call, or by flipping it before
+ *   calling `diff_free()` yourself.
  */
 
 struct combine_diff_path;
@@ -178,6 +188,7 @@ struct diff_flags {
        unsigned diff_from_contents;
        unsigned dirty_submodules;
        unsigned ignore_untracked_in_submodules;
+       unsigned ignore_submodule_set;
        unsigned ignore_dirty_submodules;
        unsigned override_submodule_config;
        unsigned dirstat_by_line;
@@ -364,6 +375,8 @@ struct diff_options {
 
        struct repository *repo;
        struct option *parseopts;
+
+       int no_free;
 };
 
 unsigned diff_filter_bit(char status);
@@ -558,6 +571,7 @@ void diffcore_fix_diff_index(void);
 
 int diff_queue_is_empty(void);
 void diff_flush(struct diff_options*);
+void diff_free(struct diff_options*);
 void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc);
 
 /* diff-raw status letters */