gc: fix cast in compare_tasks_by_selection()
compare_tasks_by_selection() is used with QSORT and gets passed pointers to the elements of "static struct maintenance_task tasks[]". It casts the *addresses* of these passed pointers to element pointers, though, and thus effectively compares some unrelated values from the stack. Fix the casts to actually compare array elements. Detected by USan (make SANITIZE=undefined test). Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
faefdd61ec
commit
a1c74791d5
@ -1253,10 +1253,8 @@ static struct maintenance_task tasks[] = {
|
||||
|
||||
static int compare_tasks_by_selection(const void *a_, const void *b_)
|
||||
{
|
||||
const struct maintenance_task *a, *b;
|
||||
|
||||
a = (const struct maintenance_task *)&a_;
|
||||
b = (const struct maintenance_task *)&b_;
|
||||
const struct maintenance_task *a = a_;
|
||||
const struct maintenance_task *b = b_;
|
||||
|
||||
return b->selected_order - a->selected_order;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user