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
This commit is contained in:
20
merge-ort.c
20
merge-ort.c
@ -2653,23 +2653,15 @@ static void write_tree(struct object_id *result_oid,
|
|||||||
size_t hash_size)
|
size_t hash_size)
|
||||||
{
|
{
|
||||||
size_t maxlen = 0, extra;
|
size_t maxlen = 0, extra;
|
||||||
unsigned int nr = versions->nr - offset;
|
unsigned int nr;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
struct string_list relevant_entries = STRING_LIST_INIT_NODUP;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*
|
assert(offset <= versions->nr);
|
||||||
* We want to sort the last (versions->nr-offset) entries in versions.
|
nr = versions->nr - offset;
|
||||||
* Do so by abusing the string_list API a bit: make another string_list
|
if (versions->nr)
|
||||||
* that contains just those entries and then sort them.
|
/* No need for STABLE_QSORT -- filenames must be unique */
|
||||||
*
|
QSORT(versions->items + offset, nr, tree_entry_order);
|
||||||
* We won't use relevant_entries again and will let it just pop off the
|
|
||||||
* stack, so there won't be allocation worries or anything.
|
|
||||||
*/
|
|
||||||
relevant_entries.items = versions->items + offset;
|
|
||||||
relevant_entries.nr = versions->nr - offset;
|
|
||||||
/* No need for STABLE_QSORT -- filenames must be unique */
|
|
||||||
QSORT(relevant_entries.items, relevant_entries.nr, tree_entry_order);
|
|
||||||
|
|
||||||
/* Pre-allocate some space in buf */
|
/* Pre-allocate some space in buf */
|
||||||
extra = hash_size + 8; /* 8: 6 for mode, 1 for space, 1 for NUL char */
|
extra = hash_size + 8; /* 8: 6 for mode, 1 for space, 1 for NUL char */
|
||||||
|
Reference in New Issue
Block a user