qsort() ptrdiff_t may be larger than int
Morten Welinder <mwelinder@gmail.com> writes: > The code looks wrong. It assumes that pointers are no larger than ints. > If pointers are larger than ints, the code does not necessarily compute > a consistent ordering and qsort is allowed to do whatever it wants. > > Morten > > static int compare_object_pointers(const void *a, const void *b) > { > const struct object * const *pa = a; > const struct object * const *pb = b; > return *pa - *pb; > } Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
a6da9395a5
commit
e23eff8be9
7
object.c
7
object.c
|
@ -82,7 +82,12 @@ static int compare_object_pointers(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
const struct object * const *pa = a;
|
const struct object * const *pa = a;
|
||||||
const struct object * const *pb = b;
|
const struct object * const *pb = b;
|
||||||
return *pa - *pb;
|
if (*pa == *pb)
|
||||||
|
return 0;
|
||||||
|
else if (*pa < *pb)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_object_refs(struct object *obj, struct object_refs *refs)
|
void set_object_refs(struct object *obj, struct object_refs *refs)
|
||||||
|
|
Loading…
Reference in New Issue