From 17d9459c7aecedecbfc59b8ba5d29279a01e9003 Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 24 Aug 2014 00:42:29 +0000 Subject: [PATCH 1/1] ncurses 5.9 - patch 20140823 + fix special case where double-width character overwrites a single- width character in the first column (report by Egmont Koblinger, cf: 20050813). --- NEWS | 7 ++++++- dist.mk | 4 ++-- ncurses/tty/tty_update.c | 28 ++++++++++++++++++++-------- package/debian-mingw/changelog | 4 ++-- package/debian-mingw64/changelog | 4 ++-- package/debian/changelog | 4 ++-- package/mingw-ncurses.nsi | 4 ++-- package/mingw-ncurses.spec | 2 +- package/ncurses.spec | 2 +- 9 files changed, 38 insertions(+), 21 deletions(-) diff --git a/NEWS b/NEWS index 0d7b26fd..ab79acb6 100644 --- a/NEWS +++ b/NEWS @@ -25,7 +25,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: NEWS,v 1.2260 2014/08/16 23:28:26 tom Exp $ +-- $Id: NEWS,v 1.2262 2014/08/23 19:28:39 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -45,6 +45,11 @@ See the AUTHORS file for the corresponding full names. Changes through 1.9.9e did not credit all contributions; it is not possible to add this information. +20140823 + + fix special case where double-width character overwrites a single- + width character in the first column (report by Egmont Koblinger, + cf: 20050813). + 20140816 + fix colors in ncurses 'b' test which did not work after changing it to put the test-strings in subwindows (cf: 20140705). diff --git a/dist.mk b/dist.mk index 1eecf461..e5d23620 100644 --- a/dist.mk +++ b/dist.mk @@ -25,7 +25,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.1001 2014/08/14 07:59:48 tom Exp $ +# $Id: dist.mk,v 1.1002 2014/08/23 16:35:54 tom Exp $ # Makefile for creating ncurses distributions. # # This only needs to be used directly as a makefile by developers, but @@ -37,7 +37,7 @@ SHELL = /bin/sh # These define the major/minor/patch versions of ncurses. NCURSES_MAJOR = 5 NCURSES_MINOR = 9 -NCURSES_PATCH = 20140816 +NCURSES_PATCH = 20140823 # We don't append the patch to the version, since this only applies to releases VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) diff --git a/ncurses/tty/tty_update.c b/ncurses/tty/tty_update.c index 4e314308..e66f7160 100644 --- a/ncurses/tty/tty_update.c +++ b/ncurses/tty/tty_update.c @@ -82,7 +82,7 @@ #include -MODULE_ID("$Id: tty_update.c,v 1.279 2014/07/12 23:16:30 tom Exp $") +MODULE_ID("$Id: tty_update.c,v 1.280 2014/08/23 19:25:18 tom Exp $") /* * This define controls the line-breakout optimization. Every once in a @@ -628,6 +628,7 @@ PutRange(NCURSES_SP_DCLx int first, int last) { int i, j, same; + int rc; TR(TRACE_CHARPUT, ("PutRange(%p, %p, %p, %d, %d, %d)", (void *) SP_PARM, @@ -655,9 +656,11 @@ PutRange(NCURSES_SP_DCLx * Always return 1 for the next GoTo() after a PutRange() if we found * identical characters at end of interval */ - return (same == 0 ? i : 1); + rc = (same == 0 ? i : 1); + } else { + rc = EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1); } - return EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1); + return rc; } /* leave unbracketed here so 'indent' works */ @@ -1492,9 +1495,17 @@ TransformLine(NCURSES_SP_DCLx int const lineno) if (oLastChar < nLastChar) { int m = max(nLastNonblank, oLastNonblank); #if USE_WIDEC_SUPPORT - while (isWidecExt(newLine[n + 1]) && n) { - --n; - --oLastChar; + if (n) { + while (isWidecExt(newLine[n + 1]) && n) { + --n; + --oLastChar; /* increase cost */ + } + } else if (n >= firstChar && + isWidecBase(newLine[n])) { + while (isWidecExt(newLine[n + 1])) { + ++n; + ++oLastChar; /* decrease cost */ + } } #endif GoTo(NCURSES_SP_ARGx lineno, n + 1); @@ -1514,8 +1525,9 @@ TransformLine(NCURSES_SP_DCLx int const lineno) if (DelCharCost(SP_PARM, oLastChar - nLastChar) > SP_PARM->_el_cost + nLastNonblank - (n + 1)) { if (PutRange(NCURSES_SP_ARGx oldLine, newLine, lineno, - n + 1, nLastNonblank)) - GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1); + n + 1, nLastNonblank)) { + GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1); + } ClrToEOL(NCURSES_SP_ARGx blank, FALSE); } else { /* diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog index 1ef5f486..fb212982 100644 --- a/package/debian-mingw/changelog +++ b/package/debian-mingw/changelog @@ -1,8 +1,8 @@ -ncurses6 (5.9-20140816) unstable; urgency=low +ncurses6 (5.9-20140823) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Thu, 14 Aug 2014 03:59:48 -0400 + -- Thomas E. Dickey Sat, 23 Aug 2014 12:35:54 -0400 ncurses6 (5.9-20131005) unstable; urgency=low diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog index 1ef5f486..fb212982 100644 --- a/package/debian-mingw64/changelog +++ b/package/debian-mingw64/changelog @@ -1,8 +1,8 @@ -ncurses6 (5.9-20140816) unstable; urgency=low +ncurses6 (5.9-20140823) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Thu, 14 Aug 2014 03:59:48 -0400 + -- Thomas E. Dickey Sat, 23 Aug 2014 12:35:54 -0400 ncurses6 (5.9-20131005) unstable; urgency=low diff --git a/package/debian/changelog b/package/debian/changelog index dcbae98b..6094abd1 100644 --- a/package/debian/changelog +++ b/package/debian/changelog @@ -1,8 +1,8 @@ -ncurses6 (5.9-20140816) unstable; urgency=low +ncurses6 (5.9-20140823) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Thu, 14 Aug 2014 03:59:48 -0400 + -- Thomas E. Dickey Sat, 23 Aug 2014 12:35:54 -0400 ncurses6 (5.9-20120608) unstable; urgency=low diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi index 58c34aa8..3ccd2fe0 100644 --- a/package/mingw-ncurses.nsi +++ b/package/mingw-ncurses.nsi @@ -1,4 +1,4 @@ -; $Id: mingw-ncurses.nsi,v 1.56 2014/08/14 07:59:48 tom Exp $ +; $Id: mingw-ncurses.nsi,v 1.57 2014/08/23 16:35:54 tom Exp $ ; TODO add examples ; TODO bump ABI to 6 @@ -10,7 +10,7 @@ !define VERSION_MAJOR "5" !define VERSION_MINOR "9" !define VERSION_YYYY "2014" -!define VERSION_MMDD "0816" +!define VERSION_MMDD "0823" !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} !define MY_ABI "5" diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec index 620fa4bb..cea7f9ee 100644 --- a/package/mingw-ncurses.spec +++ b/package/mingw-ncurses.spec @@ -3,7 +3,7 @@ Summary: shared libraries for terminal handling Name: mingw32-ncurses6 Version: 5.9 -Release: 20140816 +Release: 20140823 License: X11 Group: Development/Libraries Source: ncurses-%{version}-%{release}.tgz diff --git a/package/ncurses.spec b/package/ncurses.spec index b2da2b16..96b563f0 100644 --- a/package/ncurses.spec +++ b/package/ncurses.spec @@ -1,7 +1,7 @@ Summary: shared libraries for terminal handling Name: ncurses6 Version: 5.9 -Release: 20140816 +Release: 20140823 License: X11 Group: Development/Libraries Source: ncurses-%{version}-%{release}.tgz -- 2.44.0