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>
René Scharfe committed
Jan 22, 2017 at 18:58 UTC
83fc4d64fec779d73b18494461613ef911236daf
1 file changed
+2
-4
ref-filter.c
+2
-4
@@ -1555,8 +1555,7 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru
1555
return (s->reverse) ? -cmp : cmp;
1556
}
1557
1558
-static struct ref_sorting *ref_sorting;
1559
-static int compare_refs(const void *a_, const void *b_)
1558
+static int compare_refs(const void *a_, const void *b_, void *ref_sorting)
1559
{
1560
struct ref_array_item *a = *((struct ref_array_item **)a_);
1561
struct ref_array_item *b = *((struct ref_array_item **)b_);
@@ -1572,8 +1571,7 @@ static int compare_refs(const void *a_, const void *b_)
1571
1572
void ref_array_sort(struct ref_sorting *sorting, struct ref_array *array)
1573
{
1575
- ref_sorting = sorting;
1576
- QSORT(array->items, array->nr, compare_refs);
1574
+ QSORT_S(array->items, array->nr, compare_refs, sorting);
1575
}
1576
1577
static void append_literal(const char *cp, const char *ep, struct ref_formatting_state *state)