- <li>several improvements for handling multi-cell display of wide
- characters.
- <ul>
- <li>modify setcchar() to allow converting control characters to complex
- characters.
- <li>correct handling of multibyte characters in waddch_literal() which
- force wrapping because they are started too late on the line.
- <li>modify setcchar() to allow for wchar_t input strings that have
- more than one spacing character.
- </ul>
-
- <li>other fixes for wide-character support:
- <ul>
- <li>rewrote lib_acs.c to allow PutAttrChar() to decide how to render
- alternate-characters, i.e., to work with Linux console and UTF-8
- locale.
- <li>implement a workaround so that line-drawing works with screen's
- crippled UTF-8 support (tested with 3.9.13). This only works with
- the wide-character support (--enable-widec); the normal library
- will simply suppress line-drawing when running in a UTF-8 locale in
- screen.
- <li>corrections to lib_get_wstr.c:
- <ul>
- <li>null-terminate buffer passed to setcchar(), which occasionally
- failed.
- <li>map special characters such as erase- and kill-characters into
- key-codes so those will work as expected even if they are not
- mentioned in the terminfo.
- </ul>
- </ul>
-
- <li>modify <code>setupterm()</code> to check if the terminfo and
- terminal-modes have already been read. This ensures that it does not
- reinvoke <code>def_prog_mode()</code> when an application calls more
- than one function, such as <code>tgetent()</code> and
- <code>initscr()</code>.
-
- <li>fix form_driver() cases for REQ_CLR_EOF, REQ_CLR_EOL, REQ_DEL_CHAR,
- REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure the cursor was at
- the editing position before making modifications.
-
- <li>correct <code>keybound()</code>, which reported definitions in the
- wrong table, i.e., the list of definitions which are disabled by
- <code>keyok()</code>.
-
- <li>fixes related to safe_sprintf.c:
- <ul>
- <li>correct an allocation size in safe_sprintf.c for the "*" format
- code.
- <li>correct safe_sprintf.c to not return a null pointer if the format
- happens to be an empty string.
- <li>make return value from _nc_printf_string() consistent. Before,
- depending on whether --enable-safe-sprintf was used, it might not
- be cached for reallocating.
- </ul>
-
- <li>other low-level improvements to the optimization code include:
- <ul>
- <li>if the output is a socket or other non-tty device, use 1
- millisecond
- for the cost in mvcur; previously it was 9 milliseconds because the
- baudrate was not known.
- <li>modify lib_getch.c to avoid recursion via wgetnstr() when the
- input
- is not a tty and consequently mode-changes do not work.
- <li>fix several places in tack/pad.c which tested and used the
- parameter- and parameterless strings inconsistently.
- <li>change several tputs() calls in scrolling code to use putp(), to
- enable padding which may be needed for some terminals.
- <li>improve mvcur() by checking if it is safe to move when video
- attributes are set (msgr), and if not, reset/restore attributes
- within that function rather than doing it separately in the GoTo()
- function in tty_update.c.
- <li>use tputs() rather than putp() in a few cases in tty_update.c
- since the corresponding delays are proportional to the number of
- lines affected: repeat_char, clr_eos, change_scroll_region.
- </ul>
-
- <li>correct line/column reference in adjust_window(), needed to make
- special windows such as curscr track properly when resizing.
-
- <li>fix a potential recursion between napms() and _nc_timed_wait()
-
- <li>rewrote lib_insch.c, combining it with lib_insstr.c so both handle
- tab and other control characters consistently.
-
- <li>do not try to open gpm mouse driver if standard output is not a
- tty; the gpm library does not make this check.
+ <li>modify <code>wchgat()</code> to mark updated cells as changed so a
+ refresh will repaint those cells.
+
+ <li>correct logic in <code>wadd_wch()</code> and
+ <code>wecho_wch()</code>, which did not guard against passing the
+ multi-column attribute into a call on <code>waddch()</code>, e.g.,
+ using data returned by <code>win_wch()</code>
+
+ <li>fix redrawing of windows other than <code>stdscr</code> using
+ <code>wredrawln()</code> by touching the corresponding rows in
+ <code>curscr</code>.
+
+ <li>reduce memory leaks in repeated calls to <code>tgetent()</code> by
+ remembering the last <code>TERMINAL*</code> value allocated to hold
+ the corresponding data and freeing that if the
+ <code>tgetent()</code> result buffer is the same as the previous
+ call.
+
+ <li>modify <code>read_termtype()</code> so the <code>term_names</code>
+ data is always allocated as part of the <code>str_table</code>, a
+ better fix for a memory leak.
+
+ <li>fix <code>wins_nwstr(),</code> which did not handle single-column
+ non-8bit codes.
+
+ <li>modify <code>wbkgrnd()</code> to avoid clearing the
+ <code>A_CHARTEXT</code> attribute bits since those record the state
+ of multicolumn characters.
+
+ <li>improve <code>SIGWINCH</code> handling by postponing its effect
+ during <code>newterm()</code>, etc., when allocating screens.
+
+ <li>remove 970913 feature for copying subwindows as they are moved in
+ <code>mvwin()</code>.
+
+ <li>add checks in <code>waddchnstr()</code> and
+ <code>wadd_wchnstr()</code> to stop copying when a null character
+ is found.
+
+ <li>add some checks to ensure current position is within scrolling
+ region before scrolling on a new line.
+
+ <li>add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding.