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