diffcore-rename: add function for clearing dir_rename_count
As we adjust the usage of dir_rename_count we want to have a function for clearing, or partially clearing it out. Add a partial_clear_dir_rename_count() function for this purpose. Reviewed-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren committed
Feb 27, 2021 at 00:30 UTC
cd52e0050f0aa18bb35cda08f2dcbe94943df2cf
3 files changed
+17
-9
diffcore-rename.c
+12
@@ -528,6 +528,18 @@ static void initialize_dir_rename_info(struct dir_rename_info *info)
528
}
529
}
530
531
+void partial_clear_dir_rename_count(struct strmap *dir_rename_count)
532
+{
533
+ struct hashmap_iter iter;
534
+ struct strmap_entry *entry;
535
+
536
+ strmap_for_each_entry(dir_rename_count, &iter, entry) {
537
+ struct strintmap *counts = entry->value;
538
+ strintmap_clear(counts);
539
+ }
540
+ strmap_partial_clear(dir_rename_count, 1);
541
+}
542
+
543
static void cleanup_dir_rename_info(struct dir_rename_info *info)
544
{
545
if (!info->setup)
diffcore.h
+2
@@ -161,6 +161,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *,
161
struct diff_filespec *);
162
void diff_q(struct diff_queue_struct *, struct diff_filepair *);
163
164
+void partial_clear_dir_rename_count(struct strmap *dir_rename_count);
165
+
166
void diffcore_break(struct repository *, int);
167
void diffcore_rename(struct diff_options *);
168
void diffcore_rename_extended(struct diff_options *options,
merge-ort.c
+3
-9
@@ -351,17 +351,11 @@ static void clear_or_reinit_internal_opts(struct merge_options_internal *opti,
351
352
/* Free memory used by various renames maps */
353
for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) {
354
- struct hashmap_iter iter;
355
- struct strmap_entry *entry;
356
-
354
strset_func(&renames->dirs_removed[i]);
355
359
- strmap_for_each_entry(&renames->dir_rename_count[i],
360
- &iter, entry) {
361
- struct strintmap *counts = entry->value;
362
- strintmap_clear(counts);
363
- }
364
- strmap_func(&renames->dir_rename_count[i], 1);
356
+ partial_clear_dir_rename_count(&renames->dir_rename_count[i]);
357
+ if (!reinitialize)
358
+ strmap_clear(&renames->dir_rename_count[i], 1);
359
360
strmap_func(&renames->dir_renames[i], 0);
361
}