1# ncurses 6.1 - patch 20190810 - Thomas E. Dickey 2# 3# ------------------------------------------------------------------------------ 4# 5# Ncurses 6.1 is at 6# ftp.gnu.org:/pub/gnu 7# 8# Patches for ncurses 6.1 can be found at 9# ftp://ftp.invisible-island.net/ncurses/6.1 10# http://invisible-mirror.net/archives/ncurses/6.1 11# 12# ------------------------------------------------------------------------------ 13# ftp://ftp.invisible-island.net/ncurses/6.1/ncurses-6.1-20190810.patch.gz 14# patch by Thomas E. Dickey <dickey@invisible-island.net> 15# created Sat Aug 10 23:58:30 UTC 2019 16# ------------------------------------------------------------------------------ 17# NEWS | 5 +++- 18# VERSION | 2 - 19# dist.mk | 4 +-- 20# ncurses/base/lib_mouse.c | 4 +-- 21# ncurses/tinfo/lib_setup.c | 33 +++++++++++++++++--------------- 22# ncurses/tinfo/tinfo_driver.c | 38 ++++++++++++++++++++++--------------- 23# package/debian-mingw/changelog | 4 +-- 24# package/debian-mingw64/changelog | 4 +-- 25# package/debian/changelog | 4 +-- 26# package/mingw-ncurses.nsi | 4 +-- 27# package/mingw-ncurses.spec | 2 - 28# package/ncurses.spec | 2 - 29# package/ncursest.spec | 2 - 30# test/demo_menus.c | 5 +++- 31# test/ncurses.c | 12 +++++++++-- 32# 15 files changed, 75 insertions(+), 50 deletions(-) 33# ------------------------------------------------------------------------------ 34Index: NEWS 35Prereq: 1.3359 36--- ncurses-6.1-20190803+/NEWS 2019-08-03 22:31:47.000000000 +0000 37+++ ncurses-6.1-20190810/NEWS 2019-08-10 19:05:52.000000000 +0000 38@@ -25,7 +25,7 @@ 39 -- sale, use or other dealings in this Software without prior written -- 40 -- authorization. -- 41 ------------------------------------------------------------------------------- 42--- $Id: NEWS,v 1.3359 2019/08/03 22:31:47 tom Exp $ 43+-- $Id: NEWS,v 1.3361 2019/08/10 19:05:52 tom Exp $ 44 ------------------------------------------------------------------------------- 45 46 This is a log of changes that ncurses has gone through since Zeyd started 47@@ -45,6 +45,9 @@ 48 Changes through 1.9.9e did not credit all contributions; 49 it is not possible to add this information. 50 51+20190810 52+ + fix a few more coverity warnings. 53+ 54 20190803 55 + improve loop limits in _nc_scroll_window() to handle a case where 56 the scrolled data is a pad which is taller than the window (patch 57Index: VERSION 58--- ncurses-6.1-20190803+/VERSION 2019-08-03 13:57:42.000000000 +0000 59+++ ncurses-6.1-20190810/VERSION 2019-08-10 12:52:53.000000000 +0000 60@@ -1 +1 @@ 61-5:0:10 6.1 20190803 62+5:0:10 6.1 20190810 63Index: dist.mk 64Prereq: 1.1299 65--- ncurses-6.1-20190803+/dist.mk 2019-08-03 13:57:42.000000000 +0000 66+++ ncurses-6.1-20190810/dist.mk 2019-08-10 12:52:53.000000000 +0000 67@@ -25,7 +25,7 @@ 68 # use or other dealings in this Software without prior written # 69 # authorization. # 70 ############################################################################## 71-# $Id: dist.mk,v 1.1299 2019/08/03 13:57:42 tom Exp $ 72+# $Id: dist.mk,v 1.1300 2019/08/10 12:52:53 tom Exp $ 73 # Makefile for creating ncurses distributions. 74 # 75 # This only needs to be used directly as a makefile by developers, but 76@@ -37,7 +37,7 @@ 77 # These define the major/minor/patch versions of ncurses. 78 NCURSES_MAJOR = 6 79 NCURSES_MINOR = 1 80-NCURSES_PATCH = 20190803 81+NCURSES_PATCH = 20190810 82 83 # We don't append the patch to the version, since this only applies to releases 84 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) 85Index: ncurses/base/lib_mouse.c 86Prereq: 1.182 87--- ncurses-6.1-20190803+/ncurses/base/lib_mouse.c 2019-07-20 20:42:43.000000000 +0000 88+++ ncurses-6.1-20190810/ncurses/base/lib_mouse.c 2019-08-10 17:11:50.000000000 +0000 89@@ -84,7 +84,7 @@ 90 #define CUR SP_TERMTYPE 91 #endif 92 93-MODULE_ID("$Id: lib_mouse.c,v 1.182 2019/07/20 20:42:43 tom Exp $") 94+MODULE_ID("$Id: lib_mouse.c,v 1.183 2019/08/10 17:11:50 tom Exp $") 95 96 #include <tic.h> 97 98@@ -438,7 +438,7 @@ 99 100 #if USE_WEAK_SYMBOLS 101 /* Danger Robinson: do not use dlopen for libgpm if already loaded */ 102- if ((Gpm_Wgetch)) { 103+ if ((Gpm_Wgetch) != 0) { 104 if (!sp->_mouse_gpm_loaded) { 105 T(("GPM library was already dlopen'd, not by us")); 106 } 107Index: ncurses/tinfo/lib_setup.c 108Prereq: 1.202 109--- ncurses-6.1-20190803+/ncurses/tinfo/lib_setup.c 2019-07-28 19:33:40.000000000 +0000 110+++ ncurses-6.1-20190810/ncurses/tinfo/lib_setup.c 2019-08-10 17:08:00.000000000 +0000 111@@ -48,7 +48,7 @@ 112 #include <locale.h> 113 #endif 114 115-MODULE_ID("$Id: lib_setup.c,v 1.202 2019/07/28 19:33:40 tom Exp $") 116+MODULE_ID("$Id: lib_setup.c,v 1.204 2019/08/10 17:08:00 tom Exp $") 117 118 /**************************************************************************** 119 * 120@@ -446,23 +446,24 @@ 121 int old_cols = columns; 122 #endif 123 124- TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols); 125- 126- /* 127- * See is_term_resized() and resizeterm(). 128- * We're doing it this way because those functions belong to the upper 129- * ncurses library, while this resides in the lower terminfo library. 130- */ 131- if (sp != 0 && sp->_resize != 0) { 132- if ((new_lines != old_lines) || (new_cols != old_cols)) { 133- sp->_resize(NCURSES_SP_ARGx new_lines, new_cols); 134- } else if (sp->_sig_winch && (sp->_ungetch != 0)) { 135- sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ 136+ if (sp != 0) { 137+ TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols); 138+ /* 139+ * See is_term_resized() and resizeterm(). 140+ * We're doing it this way because those functions belong to the upper 141+ * ncurses library, while this resides in the lower terminfo library. 142+ */ 143+ if (sp->_resize != 0) { 144+ if ((new_lines != old_lines) || (new_cols != old_cols)) { 145+ sp->_resize(NCURSES_SP_ARGx new_lines, new_cols); 146+ } else if (sp->_sig_winch && (sp->_ungetch != 0)) { 147+ sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ 148+ } 149+ sp->_sig_winch = FALSE; 150 } 151- sp->_sig_winch = FALSE; 152 } 153 } 154-#endif 155+#endif /* USE_SIZECHANGE */ 156 157 /**************************************************************************** 158 * 159@@ -776,6 +777,8 @@ 160 } else if (status == TGETENT_NO) { 161 ret_error1(status, "unknown terminal type.\n", 162 myname, free(myname)); 163+ } else { 164+ ret_error0(status, "unexpected return-code\n"); 165 } 166 } 167 #if NCURSES_EXT_NUMBERS 168Index: ncurses/tinfo/tinfo_driver.c 169Prereq: 1.64 170--- ncurses-6.1-20190803+/ncurses/tinfo/tinfo_driver.c 2019-07-28 18:43:09.000000000 +0000 171+++ ncurses-6.1-20190810/ncurses/tinfo/tinfo_driver.c 2019-08-10 18:36:08.000000000 +0000 172@@ -51,7 +51,7 @@ 173 # endif 174 #endif 175 176-MODULE_ID("$Id: tinfo_driver.c,v 1.64 2019/07/28 18:43:09 tom Exp $") 177+MODULE_ID("$Id: tinfo_driver.c,v 1.66 2019/08/10 18:36:08 tom Exp $") 178 179 /* 180 * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, 181@@ -188,6 +188,8 @@ 182 } else if (status == TGETENT_NO) { 183 ret_error1(status, "unknown terminal type.\n", 184 tname, NO_COPY); 185+ } else { 186+ ret_error0(status, "unexpected return-code\n"); 187 } 188 } 189 result = TRUE; 190@@ -1340,23 +1342,29 @@ 191 unsigned ch = (unsigned) c; 192 if (flag) { 193 while ((s = _nc_expand_try(sp->_key_ok, 194- ch, &count, (size_t) 0)) != 0 195- && _nc_remove_key(&(sp->_key_ok), ch)) { 196- code = _nc_add_to_try(&(sp->_keytry), s, ch); 197- free(s); 198- count = 0; 199- if (code != OK) 200- break; 201+ ch, &count, (size_t) 0)) != 0) { 202+ if (_nc_remove_key(&(sp->_key_ok), ch)) { 203+ code = _nc_add_to_try(&(sp->_keytry), s, ch); 204+ free(s); 205+ count = 0; 206+ if (code != OK) 207+ break; 208+ } else { 209+ free(s); 210+ } 211 } 212 } else { 213 while ((s = _nc_expand_try(sp->_keytry, 214- ch, &count, (size_t) 0)) != 0 215- && _nc_remove_key(&(sp->_keytry), ch)) { 216- code = _nc_add_to_try(&(sp->_key_ok), s, ch); 217- free(s); 218- count = 0; 219- if (code != OK) 220- break; 221+ ch, &count, (size_t) 0)) != 0) { 222+ if (_nc_remove_key(&(sp->_keytry), ch)) { 223+ code = _nc_add_to_try(&(sp->_key_ok), s, ch); 224+ free(s); 225+ count = 0; 226+ if (code != OK) 227+ break; 228+ } else { 229+ free(s); 230+ } 231 } 232 } 233 } 234Index: package/debian-mingw/changelog 235--- ncurses-6.1-20190803+/package/debian-mingw/changelog 2019-08-03 13:57:42.000000000 +0000 236+++ ncurses-6.1-20190810/package/debian-mingw/changelog 2019-08-10 12:52:53.000000000 +0000 237@@ -1,8 +1,8 @@ 238-ncurses6 (6.1+20190803) unstable; urgency=low 239+ncurses6 (6.1+20190810) unstable; urgency=low 240 241 * latest weekly patch 242 243- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 03 Aug 2019 09:57:42 -0400 244+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 10 Aug 2019 08:52:53 -0400 245 246 ncurses6 (5.9-20131005) unstable; urgency=low 247 248Index: package/debian-mingw64/changelog 249--- ncurses-6.1-20190803+/package/debian-mingw64/changelog 2019-08-03 13:57:42.000000000 +0000 250+++ ncurses-6.1-20190810/package/debian-mingw64/changelog 2019-08-10 12:52:53.000000000 +0000 251@@ -1,8 +1,8 @@ 252-ncurses6 (6.1+20190803) unstable; urgency=low 253+ncurses6 (6.1+20190810) unstable; urgency=low 254 255 * latest weekly patch 256 257- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 03 Aug 2019 09:57:42 -0400 258+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 10 Aug 2019 08:52:53 -0400 259 260 ncurses6 (5.9-20131005) unstable; urgency=low 261 262Index: package/debian/changelog 263--- ncurses-6.1-20190803+/package/debian/changelog 2019-08-03 13:57:42.000000000 +0000 264+++ ncurses-6.1-20190810/package/debian/changelog 2019-08-10 12:52:53.000000000 +0000 265@@ -1,8 +1,8 @@ 266-ncurses6 (6.1+20190803) unstable; urgency=low 267+ncurses6 (6.1+20190810) unstable; urgency=low 268 269 * latest weekly patch 270 271- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 03 Aug 2019 09:57:42 -0400 272+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 10 Aug 2019 08:52:53 -0400 273 274 ncurses6 (5.9-20120608) unstable; urgency=low 275 276Index: package/mingw-ncurses.nsi 277Prereq: 1.345 278--- ncurses-6.1-20190803+/package/mingw-ncurses.nsi 2019-08-03 13:57:42.000000000 +0000 279+++ ncurses-6.1-20190810/package/mingw-ncurses.nsi 2019-08-10 12:52:53.000000000 +0000 280@@ -1,4 +1,4 @@ 281-; $Id: mingw-ncurses.nsi,v 1.345 2019/08/03 13:57:42 tom Exp $ 282+; $Id: mingw-ncurses.nsi,v 1.346 2019/08/10 12:52:53 tom Exp $ 283 284 ; TODO add examples 285 ; TODO bump ABI to 6 286@@ -10,7 +10,7 @@ 287 !define VERSION_MAJOR "6" 288 !define VERSION_MINOR "1" 289 !define VERSION_YYYY "2019" 290-!define VERSION_MMDD "0803" 291+!define VERSION_MMDD "0810" 292 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} 293 294 !define MY_ABI "5" 295Index: package/mingw-ncurses.spec 296--- ncurses-6.1-20190803+/package/mingw-ncurses.spec 2019-08-03 13:57:42.000000000 +0000 297+++ ncurses-6.1-20190810/package/mingw-ncurses.spec 2019-08-10 12:52:53.000000000 +0000 298@@ -3,7 +3,7 @@ 299 Summary: shared libraries for terminal handling 300 Name: mingw32-ncurses6 301 Version: 6.1 302-Release: 20190803 303+Release: 20190810 304 License: X11 305 Group: Development/Libraries 306 Source: ncurses-%{version}-%{release}.tgz 307Index: package/ncurses.spec 308--- ncurses-6.1-20190803+/package/ncurses.spec 2019-08-03 13:57:42.000000000 +0000 309+++ ncurses-6.1-20190810/package/ncurses.spec 2019-08-10 12:52:53.000000000 +0000 310@@ -1,7 +1,7 @@ 311 Summary: shared libraries for terminal handling 312 Name: ncurses6 313 Version: 6.1 314-Release: 20190803 315+Release: 20190810 316 License: X11 317 Group: Development/Libraries 318 Source: ncurses-%{version}-%{release}.tgz 319Index: package/ncursest.spec 320--- ncurses-6.1-20190803+/package/ncursest.spec 2019-08-03 13:57:42.000000000 +0000 321+++ ncurses-6.1-20190810/package/ncursest.spec 2019-08-10 12:52:53.000000000 +0000 322@@ -1,7 +1,7 @@ 323 Summary: Curses library with POSIX thread support. 324 Name: ncursest6 325 Version: 6.1 326-Release: 20190803 327+Release: 20190810 328 License: X11 329 Group: Development/Libraries 330 Source: ncurses-%{version}-%{release}.tgz 331Index: test/demo_menus.c 332Prereq: 1.66 333--- ncurses-6.1-20190803+/test/demo_menus.c 2019-04-06 20:42:48.000000000 +0000 334+++ ncurses-6.1-20190810/test/demo_menus.c 2019-08-10 19:25:27.000000000 +0000 335@@ -26,7 +26,7 @@ 336 * authorization. * 337 ****************************************************************************/ 338 /* 339- * $Id: demo_menus.c,v 1.66 2019/04/06 20:42:48 tom Exp $ 340+ * $Id: demo_menus.c,v 1.67 2019/08/10 19:25:27 tom Exp $ 341 * 342 * Demonstrate a variety of functions from the menu library. 343 * Thomas Dickey - 2005/4/9 344@@ -110,6 +110,8 @@ 345 static bool loaded_file = FALSE; 346 347 static char empty[1]; 348+ 349+#ifdef TRACE 350 static void failed(const char *s) GCC_NORETURN; 351 352 static void 353@@ -119,6 +121,7 @@ 354 endwin(); 355 ExitProgram(EXIT_FAILURE); 356 } 357+#endif 358 359 /* Common function to allow ^T to toggle trace-mode in the middle of a test 360 * so that trace-files can be made smaller. 361Index: test/ncurses.c 362Prereq: 1.515 363--- ncurses-6.1-20190803+/test/ncurses.c 2019-04-20 20:34:11.000000000 +0000 364+++ ncurses-6.1-20190810/test/ncurses.c 2019-08-10 19:38:41.000000000 +0000 365@@ -40,7 +40,7 @@ 366 Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993 367 Thomas E. Dickey (beginning revision 1.27 in 1996). 368 369-$Id: ncurses.c,v 1.515 2019/04/20 20:34:11 tom Exp $ 370+$Id: ncurses.c,v 1.516 2019/08/10 19:38:41 tom Exp $ 371 372 ***************************************************************************/ 373 374@@ -7876,11 +7876,15 @@ 375 { 376 int c; 377 int my_e_param = 1; 378+#ifdef NCURSES_VERSION_PATCH 379 #if HAVE_USE_DEFAULT_COLORS 380 int default_fg = COLOR_WHITE; 381 int default_bg = COLOR_BLACK; 382- bool assumed_colors = FALSE; 383 bool default_colors = FALSE; 384+#if HAVE_ASSUME_DEFAULT_COLORS 385+ bool assumed_colors = FALSE; 386+#endif 387+#endif 388 #endif 389 bool monochrome = FALSE; 390 #if HAVE_COLOR_CONTENT 391@@ -7892,7 +7896,9 @@ 392 393 while ((c = getopt(argc, argv, "a:dEe:fhmp:s:Tt:x")) != -1) { 394 switch (c) { 395+#ifdef NCURSES_VERSION_PATCH 396 #if HAVE_USE_DEFAULT_COLORS 397+#if HAVE_ASSUME_DEFAULT_COLORS 398 case 'a': 399 assumed_colors = TRUE; 400 switch (sscanf(optarg, "%d,%d", &default_fg, &default_bg)) { 401@@ -7904,10 +7910,12 @@ 402 break; 403 } 404 break; 405+#endif 406 case 'd': 407 default_colors = TRUE; 408 break; 409 #endif 410+#endif 411 #if HAVE_USE_ENV 412 case 'E': 413 use_env(FALSE); 414