xdiff: make xdfile_t.nrec a size_t instead of long

size_t is used because nrec describes the number of elements for both
recs, and for 'changed' + 2.

Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Ezekiel Newren 2025-11-18 22:34:19 +00:00 committed by Junio C Hamano
parent 6a26019c81
commit 016538780e
6 changed files with 26 additions and 26 deletions

View File

@ -483,7 +483,7 @@ static void measure_split(const xdfile_t *xdf, long split,
{ {
long i; long i;


if (split >= xdf->nrec) { if (split >= (long)xdf->nrec) {
m->end_of_file = 1; m->end_of_file = 1;
m->indent = -1; m->indent = -1;
} else { } else {
@ -506,7 +506,7 @@ static void measure_split(const xdfile_t *xdf, long split,


m->post_blank = 0; m->post_blank = 0;
m->post_indent = -1; m->post_indent = -1;
for (i = split + 1; i < xdf->nrec; i++) { for (i = split + 1; i < (long)xdf->nrec; i++) {
m->post_indent = get_indent(&xdf->recs[i]); m->post_indent = get_indent(&xdf->recs[i]);
if (m->post_indent != -1) if (m->post_indent != -1)
break; break;
@ -717,7 +717,7 @@ static void group_init(xdfile_t *xdf, struct xdlgroup *g)
*/ */
static inline int group_next(xdfile_t *xdf, struct xdlgroup *g) static inline int group_next(xdfile_t *xdf, struct xdlgroup *g)
{ {
if (g->end == xdf->nrec) if (g->end == (long)xdf->nrec)
return -1; return -1;


g->start = g->end + 1; g->start = g->end + 1;
@ -750,7 +750,7 @@ static inline int group_previous(xdfile_t *xdf, struct xdlgroup *g)
*/ */
static int group_slide_down(xdfile_t *xdf, struct xdlgroup *g) static int group_slide_down(xdfile_t *xdf, struct xdlgroup *g)
{ {
if (g->end < xdf->nrec && if (g->end < (long)xdf->nrec &&
recs_match(&xdf->recs[g->start], &xdf->recs[g->end])) { recs_match(&xdf->recs[g->start], &xdf->recs[g->end])) {
xdf->changed[g->start++] = false; xdf->changed[g->start++] = false;
xdf->changed[g->end++] = true; xdf->changed[g->end++] = true;

View File

@ -137,7 +137,7 @@ static long get_func_line(xdfenv_t *xe, xdemitconf_t const *xecfg,
buf = func_line ? func_line->buf : dummy; buf = func_line ? func_line->buf : dummy;
size = func_line ? sizeof(func_line->buf) : sizeof(dummy); size = func_line ? sizeof(func_line->buf) : sizeof(dummy);


for (l = start; l != limit && 0 <= l && l < xe->xdf1.nrec; l += step) { for (l = start; l != limit && 0 <= l && l < (long)xe->xdf1.nrec; l += step) {
long len = match_func_rec(&xe->xdf1, xecfg, l, buf, size); long len = match_func_rec(&xe->xdf1, xecfg, l, buf, size);
if (len >= 0) { if (len >= 0) {
if (func_line) if (func_line)
@ -179,14 +179,14 @@ pre_context_calculation:
long fs1, i1 = xch->i1; long fs1, i1 = xch->i1;


/* Appended chunk? */ /* Appended chunk? */
if (i1 >= xe->xdf1.nrec) { if (i1 >= (long)xe->xdf1.nrec) {
long i2 = xch->i2; long i2 = xch->i2;


/* /*
* We don't need additional context if * We don't need additional context if
* a whole function was added. * a whole function was added.
*/ */
while (i2 < xe->xdf2.nrec) { while (i2 < (long)xe->xdf2.nrec) {
if (is_func_rec(&xe->xdf2, xecfg, i2)) if (is_func_rec(&xe->xdf2, xecfg, i2))
goto post_context_calculation; goto post_context_calculation;
i2++; i2++;
@ -196,7 +196,7 @@ pre_context_calculation:
* Otherwise get more context from the * Otherwise get more context from the
* pre-image. * pre-image.
*/ */
i1 = xe->xdf1.nrec - 1; i1 = (long)xe->xdf1.nrec - 1;
} }


fs1 = get_func_line(xe, xecfg, NULL, i1, -1); fs1 = get_func_line(xe, xecfg, NULL, i1, -1);
@ -228,8 +228,8 @@ pre_context_calculation:


post_context_calculation: post_context_calculation:
lctx = xecfg->ctxlen; lctx = xecfg->ctxlen;
lctx = XDL_MIN(lctx, xe->xdf1.nrec - (xche->i1 + xche->chg1)); lctx = XDL_MIN(lctx, (long)xe->xdf1.nrec - (xche->i1 + xche->chg1));
lctx = XDL_MIN(lctx, xe->xdf2.nrec - (xche->i2 + xche->chg2)); lctx = XDL_MIN(lctx, (long)xe->xdf2.nrec - (xche->i2 + xche->chg2));


e1 = xche->i1 + xche->chg1 + lctx; e1 = xche->i1 + xche->chg1 + lctx;
e2 = xche->i2 + xche->chg2 + lctx; e2 = xche->i2 + xche->chg2 + lctx;
@ -237,13 +237,13 @@ pre_context_calculation:
if (xecfg->flags & XDL_EMIT_FUNCCONTEXT) { if (xecfg->flags & XDL_EMIT_FUNCCONTEXT) {
long fe1 = get_func_line(xe, xecfg, NULL, long fe1 = get_func_line(xe, xecfg, NULL,
xche->i1 + xche->chg1, xche->i1 + xche->chg1,
xe->xdf1.nrec); (long)xe->xdf1.nrec);
while (fe1 > 0 && is_empty_rec(&xe->xdf1, fe1 - 1)) while (fe1 > 0 && is_empty_rec(&xe->xdf1, fe1 - 1))
fe1--; fe1--;
if (fe1 < 0) if (fe1 < 0)
fe1 = xe->xdf1.nrec; fe1 = (long)xe->xdf1.nrec;
if (fe1 > e1) { if (fe1 > e1) {
e2 = XDL_MIN(e2 + (fe1 - e1), xe->xdf2.nrec); e2 = XDL_MIN(e2 + (fe1 - e1), (long)xe->xdf2.nrec);
e1 = fe1; e1 = fe1;
} }


@ -254,7 +254,7 @@ pre_context_calculation:
*/ */
if (xche->next) { if (xche->next) {
long l = XDL_MIN(xche->next->i1, long l = XDL_MIN(xche->next->i1,
xe->xdf1.nrec - 1); (long)xe->xdf1.nrec - 1);
if (l - xecfg->ctxlen <= e1 || if (l - xecfg->ctxlen <= e1 ||
get_func_line(xe, xecfg, NULL, l, e1) < 0) { get_func_line(xe, xecfg, NULL, l, e1) < 0) {
xche = xche->next; xche = xche->next;

View File

@ -158,7 +158,7 @@ static int is_eol_crlf(xdfile_t *file, int i)
{ {
size_t size; size_t size;


if (i < file->nrec - 1) if (i < (long)file->nrec - 1)
/* All lines before the last *must* end in LF */ /* All lines before the last *must* end in LF */
return (size = file->recs[i].size) > 1 && return (size = file->recs[i].size) > 1 &&
file->recs[i].ptr[size - 2] == '\r'; file->recs[i].ptr[size - 2] == '\r';
@ -317,7 +317,7 @@ static int xdl_fill_merge_buffer(xdfenv_t *xe1, const char *name1,
continue; continue;
i = m->i1 + m->chg1; i = m->i1 + m->chg1;
} }
size += xdl_recs_copy(xe1, i, xe1->xdf2.nrec - i, 0, 0, size += xdl_recs_copy(xe1, i, (int)xe1->xdf2.nrec - i, 0, 0,
dest ? dest + size : NULL); dest ? dest + size : NULL);
return size; return size;
} }
@ -622,7 +622,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
changes = c; changes = c;
i0 = xscr1->i1; i0 = xscr1->i1;
i1 = xscr1->i2; i1 = xscr1->i2;
i2 = xscr1->i1 + xe2->xdf2.nrec - xe2->xdf1.nrec; i2 = xscr1->i1 + (long)xe2->xdf2.nrec - (long)xe2->xdf1.nrec;
chg0 = xscr1->chg1; chg0 = xscr1->chg1;
chg1 = xscr1->chg2; chg1 = xscr1->chg2;
chg2 = xscr1->chg1; chg2 = xscr1->chg1;
@ -637,7 +637,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
if (!changes) if (!changes)
changes = c; changes = c;
i0 = xscr2->i1; i0 = xscr2->i1;
i1 = xscr2->i1 + xe1->xdf2.nrec - xe1->xdf1.nrec; i1 = xscr2->i1 + (long)xe1->xdf2.nrec - (long)xe1->xdf1.nrec;
i2 = xscr2->i2; i2 = xscr2->i2;
chg0 = xscr2->chg1; chg0 = xscr2->chg1;
chg1 = xscr2->chg1; chg1 = xscr2->chg1;

View File

@ -370,5 +370,5 @@ static int patience_diff(xpparam_t const *xpp, xdfenv_t *env,


int xdl_do_patience_diff(xpparam_t const *xpp, xdfenv_t *env) int xdl_do_patience_diff(xpparam_t const *xpp, xdfenv_t *env)
{ {
return patience_diff(xpp, env, 1, env->xdf1.nrec, 1, env->xdf2.nrec); return patience_diff(xpp, env, 1, (int)env->xdf1.nrec, 1, (int)env->xdf2.nrec);
} }

View File

@ -153,7 +153,7 @@ static int xdl_prepare_ctx(unsigned int pass, mmfile_t *mf, long narec, xpparam_
for (top = blk + bsize; cur < top; ) { for (top = blk + bsize; cur < top; ) {
prev = cur; prev = cur;
hav = xdl_hash_record(&cur, top, xpp->flags); hav = xdl_hash_record(&cur, top, xpp->flags);
if (XDL_ALLOC_GROW(xdf->recs, xdf->nrec + 1, narec)) if (XDL_ALLOC_GROW(xdf->recs, (long)xdf->nrec + 1, narec))
goto abort; goto abort;
crec = &xdf->recs[xdf->nrec++]; crec = &xdf->recs[xdf->nrec++];
crec->ptr = prev; crec->ptr = prev;
@ -287,7 +287,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
/* /*
* Initialize temporary arrays with DISCARD, KEEP, or INVESTIGATE. * Initialize temporary arrays with DISCARD, KEEP, or INVESTIGATE.
*/ */
if ((mlim = xdl_bogosqrt(xdf1->nrec)) > XDL_MAX_EQLIMIT) if ((mlim = xdl_bogosqrt((long)xdf1->nrec)) > XDL_MAX_EQLIMIT)
mlim = XDL_MAX_EQLIMIT; mlim = XDL_MAX_EQLIMIT;
for (i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart]; i <= xdf1->dend; i++, recs++) { for (i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart]; i <= xdf1->dend; i++, recs++) {
rcrec = cf->rcrecs[recs->minimal_perfect_hash]; rcrec = cf->rcrecs[recs->minimal_perfect_hash];
@ -295,7 +295,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; action1[i] = (nm == 0) ? DISCARD: (nm >= mlim && !need_min) ? INVESTIGATE: KEEP;
} }


if ((mlim = xdl_bogosqrt(xdf2->nrec)) > XDL_MAX_EQLIMIT) if ((mlim = xdl_bogosqrt((long)xdf2->nrec)) > XDL_MAX_EQLIMIT)
mlim = XDL_MAX_EQLIMIT; mlim = XDL_MAX_EQLIMIT;
for (i = xdf2->dstart, recs = &xdf2->recs[xdf2->dstart]; i <= xdf2->dend; i++, recs++) { for (i = xdf2->dstart, recs = &xdf2->recs[xdf2->dstart]; i <= xdf2->dend; i++, recs++) {
rcrec = cf->rcrecs[recs->minimal_perfect_hash]; rcrec = cf->rcrecs[recs->minimal_perfect_hash];
@ -348,7 +348,7 @@ static int xdl_trim_ends(xdfile_t *xdf1, xdfile_t *xdf2) {


recs1 = xdf1->recs; recs1 = xdf1->recs;
recs2 = xdf2->recs; recs2 = xdf2->recs;
for (i = 0, lim = XDL_MIN(xdf1->nrec, xdf2->nrec); i < lim; for (i = 0, lim = (long)XDL_MIN(xdf1->nrec, xdf2->nrec); i < lim;
i++, recs1++, recs2++) i++, recs1++, recs2++)
if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash) if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash)
break; break;
@ -361,8 +361,8 @@ static int xdl_trim_ends(xdfile_t *xdf1, xdfile_t *xdf2) {
if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash) if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash)
break; break;


xdf1->dend = xdf1->nrec - i - 1; xdf1->dend = (long)xdf1->nrec - i - 1;
xdf2->dend = xdf2->nrec - i - 1; xdf2->dend = (long)xdf2->nrec - i - 1;


return 0; return 0;
} }

View File

@ -47,7 +47,7 @@ typedef struct s_xrecord {


typedef struct s_xdfile { typedef struct s_xdfile {
xrecord_t *recs; xrecord_t *recs;
long nrec; size_t nrec;
ptrdiff_t dstart, dend; ptrdiff_t dstart, dend;
bool *changed; bool *changed;
long *rindex; long *rindex;