git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: type_size_sort

From
Andreas Ericsson <ae@op5.se>
Date
Dec 6, 2005, 21:38 UTC
Message-ID
<439604DF.5010603@op5.se>
In-Reply-To
<118833cc0512061319l3726fdfbs8286e7b3f5ab0713@mail.gmail.com>
Morten Welinder wrote:
Show 19 quoted lines
> static int type_size_sort(const struct object_entry *a, const struct
> object_entry *b)
> {
> ...
>   return a < b ? -1 : (a > b);
> }
> 
> This does not look valid.  the standard says you must not depend on the
> location:
> 
> 
>        [#4] When  the  same  objects  (consisting  of  size  bytes,
>        irrespective  of  their  current positions in the array) are
>        passed more  than  once  to  the  comparison  function,  the
>        results  shall be consistent with one another.  That is, for
>        qsort they shall define a total ordering on the  array,  and
>        for  bsearch  the  same object shall always compare the same
>        way with the key.
> 

It's perfectly correct. If the same list was to be passed to create_sorted_list() twice it will come out exactly the same the second time as it did the first. The only thing to remark on is that the return above could be written as below instead:

	return a - b;
-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
Previous: Morten WelinderNext: Junio C Hamano
Message 2 of 7 in “type_size_sort”
  1. Morten WelinderDec 6, 2005
  2. Andreas EricssonDec 6, 2005
  3. Junio C HamanoDec 6, 2005
  4. Morten WelinderDec 7, 2005
  5. Junio C HamanoDec 7, 2005
  6. Morten WelinderDec 7, 2005
  7. Junio C HamanoDec 6, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.