commit 611e8e319eae000b4d691f6c188af95e4de294a7 from: Stefan Sperling date: Sun May 01 11:47:21 2022 UTC avoid subtraction of values larger than int in qsort(3) comparison callbacks tweak + ok tb@ commit - a8acad7d8eeb9aca78302e45eba5eb2211e6f291 commit + 611e8e319eae000b4d691f6c188af95e4de294a7 blob - 14aa4357200fc7ebcefeb1306ac93ca9c8d7fb54 blob + c4297f6ad6a288e1c8b13eba926caea877ea2bf9 --- lib/pack_create.c +++ lib/pack_create.c @@ -162,8 +162,10 @@ delta_order_cmp(const void *pa, const void *pb) cmp = strcmp(a->path, b->path); if (cmp != 0) return cmp; - if (a->mtime != b->mtime) - return a->mtime - b->mtime; + if (a->mtime < b->mtime) + return -1; + if (a->mtime > b->mtime) + return 1; return got_object_id_cmp(&a->id, &b->id); } @@ -1514,13 +1516,21 @@ write_order_cmp(const void *pa, const void *pb) b = *(struct got_pack_meta **)pb; ahd = (a->head == NULL) ? a : a->head; bhd = (b->head == NULL) ? b : b->head; - if (ahd->mtime != bhd->mtime) - return bhd->mtime - ahd->mtime; - if (ahd != bhd) - return (uintptr_t)bhd - (uintptr_t)ahd; + if (bhd->mtime < ahd->mtime) + return -1; + if (bhd->mtime > ahd->mtime) + return 1; + if (bhd < ahd) + return -1; + if (bhd > ahd) + return 1; if (a->nchain != b->nchain) return a->nchain - b->nchain; - return a->mtime - b->mtime; + if (a->mtime < b->mtime) + return -1; + if (a->mtime > b->mtime) + return 1; + return got_object_id_cmp(&a->id, &b->id); } static int