- touched = &wwtouched[srow + w->ww_w.t];
- for (i = srow; i <= erow; i++, touched++) {
- ns = &wwns[i + w->ww_w.t][w->ww_w.l];
- smap = &wwsmap[i + w->ww_w.t][w->ww_w.l];
- buf = w->ww_buf[offset + i];
- win = w->ww_win[i];
- for (j = w->ww_w.nc; --j >= 0;)
- if (*smap++ != w->ww_index)
- win++, ns++, buf++;
- else {
- *touched = 1;
- ns++->c_w = buf++->c_w
- ^ *win++ << WWC_MSHIFT;
+ for (row = row1; row < row2; row++) {
+ col = w->ww_i.l;
+ ns = wwns[row];
+ smap = &wwsmap[row][col];
+ buf = w->ww_buf[row + offset];
+ win = w->ww_win[row];
+ nchanged = 0;
+ for (; col < w->ww_i.r; col++)
+ if (*smap++ == w->ww_index &&
+ ns[col].c_w !=
+ (x = buf[col].c_w ^ win[col] << WWC_MSHIFT)) {
+ nchanged++;
+ ns[col].c_w = x;