ref-filter: use QSORT_S in ref_array_sort()

Pass the array of sort keys to compare_refs() via the context parameter
of qsort_s() instead of using a global variable; that's cleaner and
simpler.  If ref_array_sort() is to be called from multiple parallel
threads then care still needs to be taken that the global variable
used_atom is not modified concurrently.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2017-01-22 18:58:07 +01:00 committed by Junio C Hamano
parent 5ebd9472a4
commit 83fc4d64fe

View File

@ -1555,8 +1555,7 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru
return (s->reverse) ? -cmp : cmp; return (s->reverse) ? -cmp : cmp;
} }
static struct ref_sorting *ref_sorting; static int compare_refs(const void *a_, const void *b_, void *ref_sorting)
static int compare_refs(const void *a_, const void *b_)
{ {
struct ref_array_item *a = *((struct ref_array_item **)a_); struct ref_array_item *a = *((struct ref_array_item **)a_);
struct ref_array_item *b = *((struct ref_array_item **)b_); struct ref_array_item *b = *((struct ref_array_item **)b_);
@ -1572,8 +1571,7 @@ static int compare_refs(const void *a_, const void *b_)
void ref_array_sort(struct ref_sorting *sorting, struct ref_array *array) void ref_array_sort(struct ref_sorting *sorting, struct ref_array *array)
{ {
ref_sorting = sorting; QSORT_S(array->items, array->nr, compare_refs, sorting);
QSORT(array->items, array->nr, compare_refs);
} }
static void append_literal(const char *cp, const char *ep, struct ref_formatting_state *state) static void append_literal(const char *cp, const char *ep, struct ref_formatting_state *state)