Re: [PATCH] Add compat/setenv.c, use in git.c.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Dec 6, 2005, 21:41 UTC
- Message-ID
- <7vwtih299f.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <118833cc0512061310r6398f812ia47a84d3cfad1564@mail.gmail.com>
Morten Welinder <mwelinder@gmail.com> writes:
Show 14 quoted lines
> 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;
> }Are you suggesting it to be done like this?
--- git diff
diff --git a/object.c b/object.c index 427e14c..dac5c92 100644 --- a/object.c +++ b/object.c @@ -82,7 +82,12 @@ static int compare_object_pointers(const { const struct object * const *pa = a; 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)