sortloot segfaulted when filtering a subset of items (seen with 'A' command)
tty: turn off an optimization that is the suspected cause of Windows reported
partial status lines following level changes
+tty: ensure that current status fields are always copied to prior status
+ values so that comparisons are correct
Platform- and/or Interface-Specific Fixes
tty_status[NOW][idx].y = row;
tty_status[NOW][idx].x = col;
- /* evaluate */
+ /* On a change to the field length, everything
+ further to the right must be updated as well */
if (tty_status[NOW][idx].lth != tty_status[BEFORE][idx].lth)
update_right = TRUE;
for (i = 0; fieldorder[row][i] != BL_FLUSH; ++i) {
int fldidx = fieldorder[row][i];
- if (do_field_opt && !tty_status[NOW][fldidx].redraw)
- continue;
- /*
- * Ignore zero length fields. check_fields() didn't count
- * them in either.
- */
- if (!tty_status[NOW][fldidx].lth && fldidx != BL_CONDITION)
+ if (!status_activefields[fldidx])
continue;
- if (status_activefields[fldidx]) {
+ if ((tty_status[NOW][fldidx].lth || fldidx == BL_CONDITION)
+ && (tty_status[NOW][fldidx].redraw || !do_field_opt)) {
int coloridx = tty_status[NOW][fldidx].color;
int attridx = tty_status[NOW][fldidx].attr;
int x = tty_status[NOW][fldidx].x;
End_Attr(attridx);
}
}
- /* reset .redraw and .dirty now that they've been rendered */
- tty_status[NOW][fldidx].dirty = FALSE;
- tty_status[NOW][fldidx].redraw = FALSE;
- /*
- * Make a copy of the entire tty_status struct for comparison
- * of current and previous.
- */
- tty_status[BEFORE][fldidx] = tty_status[NOW][fldidx];
}
+ /* reset .redraw and .dirty now that they've been rendered */
+ tty_status[NOW][fldidx].dirty = FALSE;
+ tty_status[NOW][fldidx].redraw = FALSE;
+
+ /*
+ * Make a copy of the entire tty_status struct for comparison
+ * of current and previous.
+ */
+ tty_status[BEFORE][fldidx] = tty_status[NOW][fldidx];
}
}
if (cond_disp_width[NOW] < cond_width_at_shrink) {