* - 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;
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;
struct repository *repo;
struct option *parseopts;
+
+ int no_free;
};
unsigned diff_filter_bit(char status);
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 */