- * correct manlinks.sed script introduced in ncurses 5.1 to avoid
- using ERE "\+", which is not understood by standard versions of
- sed. This happens to work with GNU sed, but is not portable, and
- was the initial motivation for this release.
- * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
- This differed from the "hpux*" case by using reversed symbolic
- links, which made the 5.1 version not match the configuration of
- 5.0 shared libraries.
- * guard against corrupt terminfo data:
- + modify tparm() to disallow arithmetic on strings, analyze the
- varargs list to read strings as strings and numbers as
- numbers.
- + modify tparm()'s internal function spop() to treat a null
- pointer as an empty string.
- + modify parse_format() in lib_tparm.c to ignore precision if
- it is longer than 10000.
- + rewrote limit checks in lib_mvcur.c using new functions
- _nc_safe_strcat(), etc. Made other related changes to check
- lengths used for strcat() and strcpy().
- * corrections to screen optimization:
- + added special case in lib_vidattr.c to reset underline and
- standout for devices that have no sgr0 defined.
- + change handling of non_dest_scroll_region in tty_update.c to
- clear text after it is shifted in rather than before shifting
- out. Also correct row computation.
- + modify rs2 capability in xterm-r6 and similar entries where
- cursor save/restore bracketed the sequence for resetting
- video attributes. The cursor restore would undo that.
- * UTF-8 support:
- + when checking LC_ALL, LC_CTYPE, and LANG environment
- variables for UTF-8 locale, ignore those which are set to an
- empty value, as per SUSV2.
- + encode 0xFFFD in UTF-8 with 3 bytes, not 2.
- + modify _nc_utf8_outch() to avoid sign-extension when checking
- for out-of-range value.
- * other library fixes:
- + added checks for an empty $HOME environment variable, to
- avoid retrieving terminfo descriptions from ./.terminfo .
- + change functions _nc_parse_entry() and postprocess_termcap()
- to avoid using strtok(), because it is non-reentrant.
- + initialize fds[] array to 0's in _nc_timed_wait(); apparently
- poll() only sets the revents members of that array when there
- is activity corresponding to the related file.
- + add a check for null pointer in Make_Enum_Type().
- + fix a heap problem with the c++ binding.
- + correct missing includes for <string.h> in several places,
- including the C++ binding. This is not noted by gcc unless we
- use the -fno-builtin option.
- * several fixes for tic:
- + add a check for empty buffers returned by fgets() in
- comp_scan.c next_char() function, in case tic is run on a
- non-text file (fixes a core dump).
- + modify tic to verify that its inputs are really files, in
- case someone tries to read a directory (or /dev/zero).
- + correct an uninitialized parameter to open_tempfile() in
- tic.c which made "tic -I" give an ambiguous error message
- about tmpnam.
- + correct logic in adjust_cancels(), which did not check both
- alternatives when reclassifying an extended name between
- boolean, number and string, causing an infinite loop in tic.
- * using new checks in tic for parameter counts in capability
- strings, found/fixed several errors both in the terminfo database
- and in the include/Caps file.
- + modified several terminfo capability strings, including the
- definitions for setaf, setab, in include/Caps to indicate
- that the entries are parameterized. This information is used
- to tell which strings are translated when converting to
- termcap. This fixes a problem where the generated termcap
- would contain a spurious "%p1" for the terminfo "%p1%d".
- + correct parameter counts in include/Caps for dclk as well as
- some printer-specific capabilities: csnm, defc, scs, scsd,
- smgtp, smglp.
- * various fixes for install scripts used to support configure
- --srcdir and --with-install-prefix.
- * correct several mismatches between manpage filename and ".TH"
- directives, renaming dft_fgbg.3x to default_colors.3x and
- menu_attribs.3x to menu_attributes.3x.
+ * prevent recursion in wgetch() via wgetnstr() if the connection
+ cannot be switched between cooked/raw modes because it is not a
+ TTY.
+ * correct a case in _nc_remove_string(), used by define_key(), to
+ avoid infinite loop if the given string happens to be a substring
+ of other strings which are assigned to keys.
+ * modify logic of acsc to use the original character if no mapping
+ is defined, rather than a null.
+ * several improvements for handling multi-cell display of wide
+ characters.
+ + modify setcchar() to allow converting control characters to
+ complex characters.
+ + correct handling of multibyte characters in waddch_literal()
+ which force wrapping because they are started too late on the
+ line.
+ + modify setcchar() to allow for wchar_t input strings that
+ have more than one spacing character.
+ * other fixes for wide-character support:
+ + 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.
+ + 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.
+ + corrections to lib_get_wstr.c:
+ o null-terminate buffer passed to setcchar(), which
+ occasionally failed.
+ o 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.
+ * modify setupterm() to check if the terminfo and terminal-modes
+ have already been read. This ensures that it does not reinvoke
+ def_prog_mode() when an application calls more than one function,
+ such as tgetent() and initscr().
+ * 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.
+ * correct keybound(), which reported definitions in the wrong table,
+ i.e., the list of definitions which are disabled by keyok().
+ * fixes related to safe_sprintf.c:
+ + correct an allocation size in safe_sprintf.c for the "*"
+ format code.
+ + correct safe_sprintf.c to not return a null pointer if the
+ format happens to be an empty string.
+ + make return value from _nc_printf_string() consistent.
+ Before, depending on whether --enable-safe-sprintf was used,
+ it might not be cached for reallocating.
+ * other low-level improvements to the optimization code include:
+ + 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.
+ + modify lib_getch.c to avoid recursion via wgetnstr() when the
+ input is not a tty and consequently mode-changes do not work.
+ + fix several places in tack/pad.c which tested and used the
+ parameter- and parameterless strings inconsistently.
+ + change several tputs() calls in scrolling code to use putp(),
+ to enable padding which may be needed for some terminals.
+ + 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.
+ + 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.
+ * correct line/column reference in adjust_window(), needed to make
+ special windows such as curscr track properly when resizing.
+ * fix a potential recursion between napms() and _nc_timed_wait()
+ * rewrote lib_insch.c, combining it with lib_insstr.c so both handle
+ tab and other control characters consistently.
+ * do not try to open gpm mouse driver if standard output is not a
+ tty; the gpm library does not make this check.