Skip to content

Commit 6162146

Browse files
committed
Merge branch 'en/xdiff-cleanup-2' into seen
* en/xdiff-cleanup-2: xdiff: rename rindex -> reference_index xdiff: change rindex from long to size_t in xdfile_t xdiff: make xdfile_t.nreff a size_t instead of long xdiff: make xdfile_t.nrec a size_t instead of long xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash xdiff: use unambiguous types in xdl_hash_record() xdiff: use size_t for xrecord_t.size xdiff: make xrecord_t.ptr a uint8_t instead of char xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
2 parents 73d7b74 + 1535ac7 commit 6162146

10 files changed

Lines changed: 109 additions & 109 deletions

File tree

xdiff-interface.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ void xdiff_clear_find_func(xdemitconf_t *xecfg)
300300

301301
unsigned long xdiff_hash_string(const char *s, size_t len, long flags)
302302
{
303-
return xdl_hash_record(&s, s + len, flags);
303+
return xdl_hash_record((uint8_t const**)&s, (uint8_t const*)s + len, flags);
304304
}
305305

306306
int xdiff_compare_lines(const char *l1, long s1,

xdiff/xdiffi.c

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
#include "xinclude.h"
2424

25-
static unsigned long get_hash(xdfile_t *xdf, long index)
25+
static size_t get_hash(xdfile_t *xdf, long index)
2626
{
27-
return xdf->recs[xdf->rindex[index]].ha;
27+
return xdf->recs[xdf->reference_index[index]].minimal_perfect_hash;
2828
}
2929

3030
#define XDL_MAX_COST_MIN 256
@@ -278,10 +278,10 @@ int xdl_recs_cmp(xdfile_t *xdf1, long off1, long lim1,
278278
*/
279279
if (off1 == lim1) {
280280
for (; off2 < lim2; off2++)
281-
xdf2->changed[xdf2->rindex[off2]] = true;
281+
xdf2->changed[xdf2->reference_index[off2]] = true;
282282
} else if (off2 == lim2) {
283283
for (; off1 < lim1; off1++)
284-
xdf1->changed[xdf1->rindex[off1]] = true;
284+
xdf1->changed[xdf1->reference_index[off1]] = true;
285285
} else {
286286
xdpsplit_t spl;
287287
spl.i1 = spl.i2 = 0;
@@ -385,7 +385,7 @@ static xdchange_t *xdl_add_change(xdchange_t *xscr, long i1, long i2, long chg1,
385385

386386
static int recs_match(xrecord_t *rec1, xrecord_t *rec2)
387387
{
388-
return (rec1->ha == rec2->ha);
388+
return rec1->minimal_perfect_hash == rec2->minimal_perfect_hash;
389389
}
390390

391391
/*
@@ -403,11 +403,10 @@ static int recs_match(xrecord_t *rec1, xrecord_t *rec2)
403403
*/
404404
static int get_indent(xrecord_t *rec)
405405
{
406-
long i;
407406
int ret = 0;
408407

409-
for (i = 0; i < rec->size; i++) {
410-
char c = rec->ptr[i];
408+
for (size_t i = 0; i < rec->size; i++) {
409+
uint8_t c = rec->ptr[i];
411410

412411
if (!XDL_ISSPACE(c))
413412
return ret;
@@ -484,7 +483,7 @@ static void measure_split(const xdfile_t *xdf, long split,
484483
{
485484
long i;
486485

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

508507
m->post_blank = 0;
509508
m->post_indent = -1;
510-
for (i = split + 1; i < xdf->nrec; i++) {
509+
for (i = split + 1; i < (long)xdf->nrec; i++) {
511510
m->post_indent = get_indent(&xdf->recs[i]);
512511
if (m->post_indent != -1)
513512
break;
@@ -718,7 +717,7 @@ static void group_init(xdfile_t *xdf, struct xdlgroup *g)
718717
*/
719718
static inline int group_next(xdfile_t *xdf, struct xdlgroup *g)
720719
{
721-
if (g->end == xdf->nrec)
720+
if (g->end == (long)xdf->nrec)
722721
return -1;
723722

724723
g->start = g->end + 1;
@@ -751,7 +750,7 @@ static inline int group_previous(xdfile_t *xdf, struct xdlgroup *g)
751750
*/
752751
static int group_slide_down(xdfile_t *xdf, struct xdlgroup *g)
753752
{
754-
if (g->end < xdf->nrec &&
753+
if (g->end < (long)xdf->nrec &&
755754
recs_match(&xdf->recs[g->start], &xdf->recs[g->end])) {
756755
xdf->changed[g->start++] = false;
757756
xdf->changed[g->end++] = true;
@@ -993,11 +992,11 @@ static void xdl_mark_ignorable_lines(xdchange_t *xscr, xdfenv_t *xe, long flags)
993992

994993
rec = &xe->xdf1.recs[xch->i1];
995994
for (i = 0; i < xch->chg1 && ignore; i++)
996-
ignore = xdl_blankline(rec[i].ptr, rec[i].size, flags);
995+
ignore = xdl_blankline((const char *)rec[i].ptr, (long)rec[i].size, flags);
997996

998997
rec = &xe->xdf2.recs[xch->i2];
999998
for (i = 0; i < xch->chg2 && ignore; i++)
1000-
ignore = xdl_blankline(rec[i].ptr, rec[i].size, flags);
999+
ignore = xdl_blankline((const char *)rec[i].ptr, (long)rec[i].size, flags);
10011000

10021001
xch->ignore = ignore;
10031002
}
@@ -1008,7 +1007,7 @@ static int record_matches_regex(xrecord_t *rec, xpparam_t const *xpp) {
10081007
size_t i;
10091008

10101009
for (i = 0; i < xpp->ignore_regex_nr; i++)
1011-
if (!regexec_buf(xpp->ignore_regex[i], rec->ptr, rec->size, 1,
1010+
if (!regexec_buf(xpp->ignore_regex[i], (const char *)rec->ptr, rec->size, 1,
10121011
&regmatch, 0))
10131012
return 1;
10141013

xdiff/xemit.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ static int xdl_emit_record(xdfile_t *xdf, long ri, char const *pre, xdemitcb_t *
2727
{
2828
xrecord_t *rec = &xdf->recs[ri];
2929

30-
if (xdl_emit_diffrec(rec->ptr, rec->size, pre, strlen(pre), ecb) < 0)
30+
if (xdl_emit_diffrec((char const *)rec->ptr, (long)rec->size, pre, strlen(pre), ecb) < 0)
3131
return -1;
3232

3333
return 0;
@@ -113,8 +113,8 @@ static long match_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri,
113113
xrecord_t *rec = &xdf->recs[ri];
114114

115115
if (!xecfg->find_func)
116-
return def_ff(rec->ptr, rec->size, buf, sz);
117-
return xecfg->find_func(rec->ptr, rec->size, buf, sz, xecfg->find_func_priv);
116+
return def_ff((const char *)rec->ptr, (long)rec->size, buf, sz);
117+
return xecfg->find_func((const char *)rec->ptr, (long)rec->size, buf, sz, xecfg->find_func_priv);
118118
}
119119

120120
static int is_func_rec(xdfile_t *xdf, xdemitconf_t const *xecfg, long ri)
@@ -137,7 +137,7 @@ static long get_func_line(xdfenv_t *xe, xdemitconf_t const *xecfg,
137137
buf = func_line ? func_line->buf : dummy;
138138
size = func_line ? sizeof(func_line->buf) : sizeof(dummy);
139139

140-
for (l = start; l != limit && 0 <= l && l < xe->xdf1.nrec; l += step) {
140+
for (l = start; l != limit && 0 <= l && l < (long)xe->xdf1.nrec; l += step) {
141141
long len = match_func_rec(&xe->xdf1, xecfg, l, buf, size);
142142
if (len >= 0) {
143143
if (func_line)
@@ -151,7 +151,7 @@ static long get_func_line(xdfenv_t *xe, xdemitconf_t const *xecfg,
151151
static int is_empty_rec(xdfile_t *xdf, long ri)
152152
{
153153
xrecord_t *rec = &xdf->recs[ri];
154-
long i = 0;
154+
size_t i = 0;
155155

156156
for (; i < rec->size && XDL_ISSPACE(rec->ptr[i]); i++);
157157

@@ -179,14 +179,14 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
179179
long fs1, i1 = xch->i1;
180180

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

185185
/*
186186
* We don't need additional context if
187187
* a whole function was added.
188188
*/
189-
while (i2 < xe->xdf2.nrec) {
189+
while (i2 < (long)xe->xdf2.nrec) {
190190
if (is_func_rec(&xe->xdf2, xecfg, i2))
191191
goto post_context_calculation;
192192
i2++;
@@ -196,7 +196,7 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
196196
* Otherwise get more context from the
197197
* pre-image.
198198
*/
199-
i1 = xe->xdf1.nrec - 1;
199+
i1 = (long)xe->xdf1.nrec - 1;
200200
}
201201

202202
fs1 = get_func_line(xe, xecfg, NULL, i1, -1);
@@ -228,22 +228,22 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
228228

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

234234
e1 = xche->i1 + xche->chg1 + lctx;
235235
e2 = xche->i2 + xche->chg2 + lctx;
236236

237237
if (xecfg->flags & XDL_EMIT_FUNCCONTEXT) {
238238
long fe1 = get_func_line(xe, xecfg, NULL,
239239
xche->i1 + xche->chg1,
240-
xe->xdf1.nrec);
240+
(long)xe->xdf1.nrec);
241241
while (fe1 > 0 && is_empty_rec(&xe->xdf1, fe1 - 1))
242242
fe1--;
243243
if (fe1 < 0)
244-
fe1 = xe->xdf1.nrec;
244+
fe1 = (long)xe->xdf1.nrec;
245245
if (fe1 > e1) {
246-
e2 = XDL_MIN(e2 + (fe1 - e1), xe->xdf2.nrec);
246+
e2 = XDL_MIN(e2 + (fe1 - e1), (long)xe->xdf2.nrec);
247247
e1 = fe1;
248248
}
249249

@@ -254,7 +254,7 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
254254
*/
255255
if (xche->next) {
256256
long l = XDL_MIN(xche->next->i1,
257-
xe->xdf1.nrec - 1);
257+
(long)xe->xdf1.nrec - 1);
258258
if (l - xecfg->ctxlen <= e1 ||
259259
get_func_line(xe, xecfg, NULL, l, e1) < 0) {
260260
xche = xche->next;

xdiff/xhistogram.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@ struct region {
9090

9191
static int cmp_recs(xrecord_t *r1, xrecord_t *r2)
9292
{
93-
return r1->ha == r2->ha;
93+
return r1->minimal_perfect_hash == r2->minimal_perfect_hash;
9494

9595
}
9696

9797
#define CMP(i, s1, l1, s2, l2) \
9898
(cmp_recs(REC(i->env, s1, l1), REC(i->env, s2, l2)))
9999

100100
#define TABLE_HASH(index, side, line) \
101-
XDL_HASHLONG((REC(index->env, side, line))->ha, index->table_bits)
101+
XDL_HASHLONG((REC(index->env, side, line))->minimal_perfect_hash, index->table_bits)
102102

103103
static int scanA(struct histindex *index, int line1, int count1)
104104
{

xdiff/xmerge.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ static int xdl_merge_cmp_lines(xdfenv_t *xe1, int i1, xdfenv_t *xe2, int i2,
101101
xrecord_t *rec2 = xe2->xdf2.recs + i2;
102102

103103
for (i = 0; i < line_count; i++) {
104-
int result = xdl_recmatch(rec1[i].ptr, rec1[i].size,
105-
rec2[i].ptr, rec2[i].size, flags);
104+
int result = xdl_recmatch((const char *)rec1[i].ptr, (long)rec1[i].size,
105+
(const char *)rec2[i].ptr, (long)rec2[i].size, flags);
106106
if (!result)
107107
return -1;
108108
}
@@ -119,11 +119,11 @@ static int xdl_recs_copy_0(int use_orig, xdfenv_t *xe, int i, int count, int nee
119119
if (count < 1)
120120
return 0;
121121

122-
for (i = 0; i < count; size += recs[i++].size)
122+
for (i = 0; i < count; size += (int)recs[i++].size)
123123
if (dest)
124124
memcpy(dest + size, recs[i].ptr, recs[i].size);
125125
if (add_nl) {
126-
i = recs[count - 1].size;
126+
i = (int)recs[count - 1].size;
127127
if (i == 0 || recs[count - 1].ptr[i - 1] != '\n') {
128128
if (needs_cr) {
129129
if (dest)
@@ -156,9 +156,9 @@ static int xdl_orig_copy(xdfenv_t *xe, int i, int count, int needs_cr, int add_n
156156
*/
157157
static int is_eol_crlf(xdfile_t *file, int i)
158158
{
159-
long size;
159+
size_t size;
160160

161-
if (i < file->nrec - 1)
161+
if (i < (long)file->nrec - 1)
162162
/* All lines before the last *must* end in LF */
163163
return (size = file->recs[i].size) > 1 &&
164164
file->recs[i].ptr[size - 2] == '\r';
@@ -317,15 +317,15 @@ static int xdl_fill_merge_buffer(xdfenv_t *xe1, const char *name1,
317317
continue;
318318
i = m->i1 + m->chg1;
319319
}
320-
size += xdl_recs_copy(xe1, i, xe1->xdf2.nrec - i, 0, 0,
320+
size += xdl_recs_copy(xe1, i, (int)xe1->xdf2.nrec - i, 0, 0,
321321
dest ? dest + size : NULL);
322322
return size;
323323
}
324324

325325
static int recmatch(xrecord_t *rec1, xrecord_t *rec2, unsigned long flags)
326326
{
327-
return xdl_recmatch(rec1->ptr, rec1->size,
328-
rec2->ptr, rec2->size, flags);
327+
return xdl_recmatch((const char *)rec1->ptr, (long)rec1->size,
328+
(const char *)rec2->ptr, (long)rec2->size, flags);
329329
}
330330

331331
/*
@@ -382,10 +382,10 @@ static int xdl_refine_conflicts(xdfenv_t *xe1, xdfenv_t *xe2, xdmerge_t *m,
382382
* we have a very simple mmfile structure.
383383
*/
384384
t1.ptr = (char *)xe1->xdf2.recs[m->i1].ptr;
385-
t1.size = xe1->xdf2.recs[m->i1 + m->chg1 - 1].ptr
385+
t1.size = (char *)xe1->xdf2.recs[m->i1 + m->chg1 - 1].ptr
386386
+ xe1->xdf2.recs[m->i1 + m->chg1 - 1].size - t1.ptr;
387387
t2.ptr = (char *)xe2->xdf2.recs[m->i2].ptr;
388-
t2.size = xe2->xdf2.recs[m->i2 + m->chg2 - 1].ptr
388+
t2.size = (char *)xe2->xdf2.recs[m->i2 + m->chg2 - 1].ptr
389389
+ xe2->xdf2.recs[m->i2 + m->chg2 - 1].size - t2.ptr;
390390
if (xdl_do_diff(&t1, &t2, xpp, &xe) < 0)
391391
return -1;
@@ -440,8 +440,8 @@ static int line_contains_alnum(const char *ptr, long size)
440440
static int lines_contain_alnum(xdfenv_t *xe, int i, int chg)
441441
{
442442
for (; chg; chg--, i++)
443-
if (line_contains_alnum(xe->xdf2.recs[i].ptr,
444-
xe->xdf2.recs[i].size))
443+
if (line_contains_alnum((const char *)xe->xdf2.recs[i].ptr,
444+
(long)xe->xdf2.recs[i].size))
445445
return 1;
446446
return 0;
447447
}
@@ -622,7 +622,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
622622
changes = c;
623623
i0 = xscr1->i1;
624624
i1 = xscr1->i2;
625-
i2 = xscr1->i1 + xe2->xdf2.nrec - xe2->xdf1.nrec;
625+
i2 = xscr1->i1 + (long)xe2->xdf2.nrec - (long)xe2->xdf1.nrec;
626626
chg0 = xscr1->chg1;
627627
chg1 = xscr1->chg2;
628628
chg2 = xscr1->chg1;
@@ -637,7 +637,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
637637
if (!changes)
638638
changes = c;
639639
i0 = xscr2->i1;
640-
i1 = xscr2->i1 + xe1->xdf2.nrec - xe1->xdf1.nrec;
640+
i1 = xscr2->i1 + (long)xe1->xdf2.nrec - (long)xe1->xdf1.nrec;
641641
i2 = xscr2->i2;
642642
chg0 = xscr2->chg1;
643643
chg1 = xscr2->chg1;

xdiff/xpatience.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
struct hashmap {
4949
int nr, alloc;
5050
struct entry {
51-
unsigned long hash;
51+
size_t minimal_perfect_hash;
5252
/*
5353
* 0 = unused entry, 1 = first line, 2 = second, etc.
5454
* line2 is NON_UNIQUE if the line is not unique
@@ -101,10 +101,10 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
101101
* So we multiply ha by 2 in the hope that the hashing was
102102
* "unique enough".
103103
*/
104-
int index = (int)((record->ha << 1) % map->alloc);
104+
int index = (int)((record->minimal_perfect_hash << 1) % map->alloc);
105105

106106
while (map->entries[index].line1) {
107-
if (map->entries[index].hash != record->ha) {
107+
if (map->entries[index].minimal_perfect_hash != record->minimal_perfect_hash) {
108108
if (++index >= map->alloc)
109109
index = 0;
110110
continue;
@@ -120,8 +120,8 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
120120
if (pass == 2)
121121
return;
122122
map->entries[index].line1 = line;
123-
map->entries[index].hash = record->ha;
124-
map->entries[index].anchor = is_anchor(xpp, map->env->xdf1.recs[line - 1].ptr);
123+
map->entries[index].minimal_perfect_hash = record->minimal_perfect_hash;
124+
map->entries[index].anchor = is_anchor(xpp, (const char *)map->env->xdf1.recs[line - 1].ptr);
125125
if (!map->first)
126126
map->first = map->entries + index;
127127
if (map->last) {
@@ -248,7 +248,7 @@ static int match(struct hashmap *map, int line1, int line2)
248248
{
249249
xrecord_t *record1 = &map->env->xdf1.recs[line1 - 1];
250250
xrecord_t *record2 = &map->env->xdf2.recs[line2 - 1];
251-
return record1->ha == record2->ha;
251+
return record1->minimal_perfect_hash == record2->minimal_perfect_hash;
252252
}
253253

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

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

0 commit comments

Comments
 (0)