On Mon, May 20, 2024, 15:58 Chet Ramey <chet.ra...@case.edu> wrote: > On 5/17/24 5:56 PM, Grisha Levit wrote: > > On Fri, May 17, 2024 at 3:06 PM Chet Ramey <chet.ra...@case.edu> wrote: > >> > >> On 5/17/24 12:57 PM, Grisha Levit wrote: > >>> The current cmp implementation for size and blocks subtracts the two > >>> values and returns the difference as an int. This subtraction can > >>> overflow, and the returned int can end up having the wrong sign. > >>> > >>> This also makes the qsort comparison function non-transitive. (Some > >>> interesting discussion on that at [1]). > >> > >> Thanks for the report. If overflow is a concern, then a guaranteed > >> transitive comparison function is the right thing. Your solution is > clever, > >> but a little obscure; I think I'll make it look more like the other > >> comparison functions. > > > > FWIW, I was copying the approach from coreutils[1] and gnulib[2]: > > Sure. I'm going to stick with code clarity and uniformity over micro > optimizations here. Maybe I could hide it in a macro. >
an if overflow sounds like an important thing to code , an overall one -- > ``The lyf so short, the craft so long to lerne.'' - Chaucer > ``Ars longa, vita brevis'' - Hippocrates > Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/ > >