From: Andreas Ericsson Date: Tue, 06 Dec 2005 21:38:39 GMT Subject: Re: type_size_sort Message-ID: <439604DF.5010603@op5.se> In-Reply-To: <118833cc0512061319l3726fdfbs8286e7b3f5ab0713@mail.gmail.com> Morten Welinder wrote: > 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