- <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>fix a sign-extension bug in infocmp's repair_acsc() function.
+
+ <li>change winnstr() to stop at the end of the line.
+
+ <li>make Ada95 demo_panels() example work.
+
+ <li>fix for adding a non-spacing character at the beginning of a line.
+
+ <li>fill in extended-color pair to make colors work
+ for wide-characters using extended-colors.
+
+ <li>improve refresh of window on top of multi-column characters,
+ taking into account split characters on left/right window
+ boundaries.
+
+ <li>modify <code>win_wchnstr()</code> to ensure that only a base cell
+ is returned for each multi-column character.
+
+ <li>improve <code>waddch()</code> and <code>winsch()</code> handling of
+ EILSEQ from <code>mbrtowc()</code> by using <code>unctrl()</code>
+ to display illegal bytes rather than trying to append further bytes
+ to make up a valid sequence.
+
+ <li>restore <code>curs_set()</code> state after
+ <code>endwin()</code>/<code>refresh()</code>
+
+ <li>modify <code>keyname()</code> to use "^X" form only if
+ <code>meta()</code> has been called, or if <code>keyname()</code>
+ is called without initializing curses, e.g., via
+ <code>initscr()</code> or <code>newterm()</code>.
+
+ <li>modify <code>unctrl()</code> to check codes in 128-255 range versus
+ <code>isprint()</code>.
+ If they are not printable, and locale was set, use a "M-" or "~"
+ sequence.
+
+ <li>improve <code>resizeterm()</code> by moving ripped-off lines, and
+ repainting the soft-keys.
+
+ <li>modify form library to accept control characters such as newline
+ in set_field_buffer(), which is compatible with Solaris.
+
+ <li>use <code>NCURSES_MOUSE_MASK()</code> in definition of
+ <code>BUTTON_RELEASE()</code>, etc., to make those work properly
+ with the <code>--enable-ext-mouse</code> configuration
+
+ <li>correct some functions in Ada95 binding which were using return
+ value from C where none was returned.
+
+ <li>reviewed/fixed issues reported by Coverity and Klocwork tools.