Skip to content

Commit 257ae76

Browse files
committed
Merge branch 'ah/merge-ort-ubsan-fix'
Code clean-up for merge-ort backend. * ah/merge-ort-ubsan-fix: merge-ort: only do pointer arithmetic for non-empty lists
2 parents 7bec8e7 + c1ea48a commit 257ae76

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

merge-ort.c

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2653,23 +2653,15 @@ static void write_tree(struct object_id *result_oid,
26532653
size_t hash_size)
26542654
{
26552655
size_t maxlen = 0, extra;
2656-
unsigned int nr = versions->nr - offset;
2656+
unsigned int nr;
26572657
struct strbuf buf = STRBUF_INIT;
2658-
struct string_list relevant_entries = STRING_LIST_INIT_NODUP;
26592658
int i;
26602659

2661-
/*
2662-
* We want to sort the last (versions->nr-offset) entries in versions.
2663-
* Do so by abusing the string_list API a bit: make another string_list
2664-
* that contains just those entries and then sort them.
2665-
*
2666-
* We won't use relevant_entries again and will let it just pop off the
2667-
* stack, so there won't be allocation worries or anything.
2668-
*/
2669-
relevant_entries.items = versions->items + offset;
2670-
relevant_entries.nr = versions->nr - offset;
2671-
/* No need for STABLE_QSORT -- filenames must be unique */
2672-
QSORT(relevant_entries.items, relevant_entries.nr, tree_entry_order);
2660+
assert(offset <= versions->nr);
2661+
nr = versions->nr - offset;
2662+
if (versions->nr)
2663+
/* No need for STABLE_QSORT -- filenames must be unique */
2664+
QSORT(versions->items + offset, nr, tree_entry_order);
26732665

26742666
/* Pre-allocate some space in buf */
26752667
extra = hash_size + 8; /* 8: 6 for mode, 1 for space, 1 for NUL char */

0 commit comments

Comments
 (0)