This revision was automatically updated to reflect the committed changes. Closed by commit rHG71fbceb58746: xdiff: use int64 for hash table size (authored by quark, committed by ).
REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D2765?vs=6802&id=6809 REVISION DETAIL https://phab.mercurial-scm.org/D2765 AFFECTED FILES mercurial/thirdparty/xdiff/xprepare.c mercurial/thirdparty/xdiff/xutils.c mercurial/thirdparty/xdiff/xutils.h CHANGE DETAILS diff --git a/mercurial/thirdparty/xdiff/xutils.h b/mercurial/thirdparty/xdiff/xutils.h --- a/mercurial/thirdparty/xdiff/xutils.h +++ b/mercurial/thirdparty/xdiff/xutils.h @@ -32,7 +32,7 @@ int64_t xdl_guess_lines(mmfile_t *mf, int64_t sample); int xdl_recmatch(const char *l1, int64_t s1, const char *l2, int64_t s2); uint64_t xdl_hash_record(char const **data, char const *top); -unsigned int xdl_hashbits(unsigned int size); +unsigned int xdl_hashbits(int64_t size); diff --git a/mercurial/thirdparty/xdiff/xutils.c b/mercurial/thirdparty/xdiff/xutils.c --- a/mercurial/thirdparty/xdiff/xutils.c +++ b/mercurial/thirdparty/xdiff/xutils.c @@ -141,9 +141,10 @@ return ha; } -unsigned int xdl_hashbits(unsigned int size) { - unsigned int val = 1, bits = 0; +unsigned int xdl_hashbits(int64_t size) { + int64_t val = 1; + unsigned int bits = 0; - for (; val < size && bits < CHAR_BIT * sizeof(unsigned int); val <<= 1, bits++); + for (; val < size && bits < (int64_t) CHAR_BIT * sizeof(unsigned int); val <<= 1, bits++); return bits ? bits: 1; } diff --git a/mercurial/thirdparty/xdiff/xprepare.c b/mercurial/thirdparty/xdiff/xprepare.c --- a/mercurial/thirdparty/xdiff/xprepare.c +++ b/mercurial/thirdparty/xdiff/xprepare.c @@ -70,7 +70,7 @@ static int xdl_init_classifier(xdlclassifier_t *cf, int64_t size, int64_t flags) { cf->flags = flags; - cf->hbits = xdl_hashbits((unsigned int) size); + cf->hbits = xdl_hashbits(size); cf->hsize = 1 << cf->hbits; if (xdl_cha_init(&cf->ncha, sizeof(xdlclass_t), size / 4 + 1) < 0) { @@ -262,7 +262,7 @@ goto abort; { - hbits = xdl_hashbits((unsigned int) narec); + hbits = xdl_hashbits(narec); hsize = 1 << hbits; if (!(rhash = (xrecord_t **) xdl_malloc(hsize * sizeof(xrecord_t *)))) goto abort; To: quark, #hg-reviewers, indygreg Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel