]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff: use unambiguous types in xdl_bogo_sqrt()
authorEzekiel Newren <ezekielnewren@gmail.com>
Wed, 29 Apr 2026 22:08:11 +0000 (22:08 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 30 Apr 2026 00:16:50 +0000 (09:16 +0900)
There is no real square root for a negative number and size_t may not
be large enough for certain applications, replace long with uint64_t.

Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xdiffi.c
xdiff/xprepare.c
xdiff/xutils.c
xdiff/xutils.h

index 4376f943dba539ec1cfd72e083e8e5a24d18e61d..88708c12a3299ad1af1c6877b51b9ec6f9d2a8b9 100644 (file)
@@ -348,7 +348,7 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
        kvdf += xe->xdf2.nreff + 1;
        kvdb += xe->xdf2.nreff + 1;
 
-       xenv.mxcost = xdl_bogosqrt(ndiags);
+       xenv.mxcost = (long)xdl_bogosqrt((uint64_t)ndiags);
        if (xenv.mxcost < XDL_MAX_COST_MIN)
                xenv.mxcost = XDL_MAX_COST_MIN;
        xenv.snake_cnt = XDL_SNAKE_CNT;
index d6e1901d2d01c950513a5ab69bb8c2737668a9a9..48fb5ce6fe6f684a1615b783cde3b6b5cacfeca0 100644 (file)
@@ -290,7 +290,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
        /*
         * Initialize temporary arrays with DISCARD, KEEP, or INVESTIGATE.
         */
-       if ((mlim = xdl_bogosqrt((long)xdf1->nrec)) > XDL_MAX_EQLIMIT)
+       if ((mlim = (long)xdl_bogosqrt((uint64_t)xdf1->nrec)) > XDL_MAX_EQLIMIT)
                mlim = XDL_MAX_EQLIMIT;
        for (i = xdf1->dstart; i <= xdf1->dend; i++) {
                size_t mph1 = xdf1->recs[i].minimal_perfect_hash;
@@ -299,7 +299,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
                action1[i] = (nm == 0) ? DISCARD: (nm >= mlim && !need_min) ? INVESTIGATE: KEEP;
        }
 
-       if ((mlim = xdl_bogosqrt((long)xdf2->nrec)) > XDL_MAX_EQLIMIT)
+       if ((mlim = (long)xdl_bogosqrt((uint64_t)xdf2->nrec)) > XDL_MAX_EQLIMIT)
                mlim = XDL_MAX_EQLIMIT;
        for (i = xdf2->dstart; i <= xdf2->dend; i++) {
                size_t mph2 = xdf2->recs[i].minimal_perfect_hash;
index 77ee1ad9c8687545847c200f5fd47248baffaae1..9a999acdc079d250e947c396995bcd0236a02324 100644 (file)
@@ -23,8 +23,8 @@
 #include "xinclude.h"
 
 
-long xdl_bogosqrt(long n) {
-       long i;
+uint64_t xdl_bogosqrt(uint64_t n) {
+       uint64_t i;
 
        /*
         * Classical integer square root approximation using shifts.
index 615b4a9d3554335861c41592a35f247fbec2da20..58f9d74cda37a3f5f9c89db3ba513bf5d92d1783 100644 (file)
@@ -25,7 +25,7 @@
 
 
 
-long xdl_bogosqrt(long n);
+uint64_t xdl_bogosqrt(uint64_t n);
 int xdl_emit_diffrec(char const *rec, long size, char const *pre, long psize,
                     xdemitcb_t *ecb);
 int xdl_cha_init(chastore_t *cha, long isize, long icount);