stable-qsort: avoid using potentially unaligned access
commitb80741e5b9c6b47a6f802ffdb0bba87357b35a9f
authorRené Scharfe <l.s.r@web.de>
Fri, 7 Jan 2022 23:30:44 +0000 (8 00:30 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Jan 2022 23:48:40 +0000 (7 15:48 -0800)
tree030dd0b61acbb538ab612724ac091304fa17e944
parent9bfa5fbae21fc55141766c3192a0c26164423e37
stable-qsort: avoid using potentially unaligned access

Like in the previous patch for compat/qsort_s.c, remove the optimization
of using an on-stack buffer to avoid small allocations.  This ensures
maximum alignment for the array elements and simplifies the code a bit.

The performance impact for the current callers is unlikely to be
noticeable:

 * compat/mingw.c::make_environment_block() uses ALLOC_ARRAY and
   ALLOC_GROW several times already, so another allocation of up to 1KB
   should not matter much.

 * diffcore-rename.c::diffcore_rename_extended() is called once per diff
   or twice per merge, and those require allocations for each object and
   more already.

 * merge-ort.c::detect_and_process_renames() is called once per merge.
   It's responsible for the two per-merge diffcore_rename_extended()
   calls mentioned above as well, though.  So this is possibly the most
   impacted caller.  Per-object allocations are likely to dwarf the
   additional small allocations in git_stable_qsort(), though.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
stable-qsort.c