commit ad5b3f855591bc548f15e09ae4b7fdf674f16245 from: Neels Hofmeyr date: Mon Oct 12 04:01:33 2020 UTC rename diff_atom->d to diff_atom->root, because it always is The idea was that for each diff box within the files, the atoms would have a backpointer to the current layer of diff_data (indicating the current section), but it is not actually needed to update the backpointer in each atom to the current diff_data. That is why the current code always points atom->d to the root diff_data for the entire file. Clarify by proper name. Constructs like atom->d->root->foo are redundant, just use atom->root->foo. commit - 65a56b169e5746c2fe2ee46008238505c64e4908 commit + ad5b3f855591bc548f15e09ae4b7fdf674f16245 blob - 3eac2d385875ae4eb6ed7bbf3a373422e4ff27eb blob + ed69c313f4ddb604d3cc46607cc371e59bdbc9ed --- lib/diff_atomize_text.c +++ lib/diff_atomize_text.c @@ -88,7 +88,7 @@ diff_data_atomize_text_lines_fd(struct diff_data *d) return ENOMEM; *atom = (struct diff_atom){ - .d = d, + .root = d, .pos = pos, .at = NULL, /* atom data is not memory-mapped */ .len = line_end - pos, @@ -142,7 +142,7 @@ diff_data_atomize_text_lines_mmap(struct diff_data *d) return ENOMEM; *atom = (struct diff_atom){ - .d = d, + .root = d, .pos = (off_t)(pos - d->data), .at = pos, .len = line_end - pos, blob - 8a07062d01d7db4493862d75ae6a6f4335fb6ea2 blob + d8950f01de74482510174dd49af87a8d3f8b13f6 --- lib/diff_internal.h +++ lib/diff_internal.h @@ -59,7 +59,7 @@ diff_range_len(const struct diff_range *r) struct diff_data; struct diff_atom { - struct diff_data *d; /* back pointer to associated diff data */ + struct diff_data *root; /* back pointer to root diff data */ off_t pos; /* if not memory-mapped */ const uint8_t *at; /* if memory-mapped */ blob - 73eeffeb2f2c32acdb1121c77d1186c4504bc025 blob + 3b84041649bd63f93a569f88ea5a0b8fe4b6fc99 --- lib/diff_main.c +++ lib/diff_main.c @@ -106,7 +106,7 @@ diff_atom_cmp(int *cmp, const struct diff_atom *right) { off_t remain_left, remain_right; - int flags = (left->d->root->diff_flags | right->d->root->diff_flags); + int flags = (left->root->diff_flags | right->root->diff_flags); bool ignore_whitespace = (flags & DIFF_FLAG_IGNORE_WHITESPACE); if (!ignore_whitespace) { @@ -152,7 +152,7 @@ diff_atom_cmp(int *cmp, n_right = MIN(chunksz, remain_right); if (left->at == NULL) { - r = read_at(left->d->root->f, + r = read_at(left->root->f, left->pos + (left->len - remain_left), buf_left, n_left); if (r) { @@ -165,7 +165,7 @@ diff_atom_cmp(int *cmp, } if (right->at == NULL) { - r = read_at(right->d->root->f, + r = read_at(right->root->f, right->pos + (right->len - remain_right), buf_right, n_right); if (r) { blob - 2d275feede607a3d0b92f6e45f16374e0b21bf5f blob + c3b2ac5dc419e89767ba81d0b11e159efef02bc9 --- lib/diff_output.c +++ lib/diff_output.c @@ -38,16 +38,16 @@ get_atom_byte(int *ch, struct diff_atom *atom, off_t o return 0; } - cur = ftello(atom->d->root->f); + cur = ftello(atom->root->f); if (cur == -1) return errno; if (cur != atom->pos + off && - fseeko(atom->d->root->f, atom->pos + off, SEEK_SET) == -1) + fseeko(atom->root->f, atom->pos + off, SEEK_SET) == -1) return errno; - *ch = fgetc(atom->d->root->f); - if (*ch == EOF && ferror(atom->d->root->f)) + *ch = fgetc(atom->root->f); + if (*ch == EOF && ferror(atom->root->f)) return errno; return 0;