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. -- ``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/
OpenPGP_signature.asc
Description: OpenPGP digital signature