1# ncurses 6.1 - patch 20190728 - 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-20190728.patch.gz
14# patch by Thomas E. Dickey <dickey@invisible-island.net>
15# created  Mon Jul 29 00:58:02 UTC 2019
16# ------------------------------------------------------------------------------
17# NEWS                             |    6 ++
18# VERSION                          |    2
19# c++/cursesapp.cc                 |    6 +-
20# c++/cursesapp.h                  |    6 +-
21# c++/cursesf.cc                   |    8 +--
22# c++/cursesf.h                    |   12 ++---
23# c++/cursesm.cc                   |   10 ++--
24# c++/cursesm.h                    |   14 +++---
25# c++/cursesp.cc                   |    6 +-
26# c++/cursesp.h                    |    8 +--
27# c++/cursesw.cc                   |    6 +-
28# c++/cursesw.h                    |   10 ++--
29# c++/cursslk.cc                   |    6 +-
30# c++/cursslk.h                    |    6 +-
31# c++/demo.cc                      |   10 ++--
32# dist.mk                          |    4 -
33# doc/hackguide.doc                |   45 ++++++++++-----------
34# doc/html/hackguide.html          |   78 ++++++++++++++++++++-----------------
35# doc/html/ncurses-intro.html      |   32 ++++++++-------
36# doc/ncurses-intro.doc            |   17 ++++----
37# ncurses/curses.priv.h            |   16 ++++---
38# ncurses/tinfo/MKuserdefs.sh      |    8 ++-
39# ncurses/tinfo/lib_setup.c        |   28 ++++++++-----
40# ncurses/tinfo/tinfo_driver.c     |   18 +++++---
41# package/debian-mingw/changelog   |    4 -
42# package/debian-mingw64/changelog |    4 -
43# package/debian/changelog         |    4 -
44# package/mingw-ncurses.nsi        |    4 -
45# package/mingw-ncurses.spec       |    2
46# package/ncurses.spec             |    2
47# package/ncursest.spec            |    2
48# progs/tput.c                     |    6 +-
49# test/test_sgr.c                  |    3 -
50# 33 files changed, 214 insertions(+), 179 deletions(-)
51# ------------------------------------------------------------------------------
52# Please remove the following file before applying this patch.
53# (You can feed this patch to 'sh' to do so.)
54
55rm -f progs/ktrace.out
56exit
57
58Index: NEWS
59Prereq:  1.3354
60--- ncurses-6.1-20190727+/NEWS	2019-07-27 22:45:29.000000000 +0000
61+++ ncurses-6.1-20190728/NEWS	2019-07-28 18:49:10.000000000 +0000
62@@ -25,7 +25,7 @@
63 -- sale, use or other dealings in this Software without prior written        --
64 -- authorization.                                                            --
65 -------------------------------------------------------------------------------
66--- $Id: NEWS,v 1.3354 2019/07/27 22:45:29 tom Exp $
67+-- $Id: NEWS,v 1.3356 2019/07/28 18:49:10 tom Exp $
68 -------------------------------------------------------------------------------
69
70 This is a log of changes that ncurses has gone through since Zeyd started
71@@ -45,6 +45,10 @@
72 Changes through 1.9.9e did not credit all contributions;
73 it is not possible to add this information.
74
75+20190728
76+	+ fix a few more coverity warnings.
77+	+ more documentation updates based on tctest.
78+
79 20190727
80 	+ fix a few coverity warnings.
81 	+ documentation updates based on tctest.
82Index: VERSION
83--- ncurses-6.1-20190727+/VERSION	2019-07-26 23:10:14.000000000 +0000
84+++ ncurses-6.1-20190728/VERSION	2019-07-28 10:39:10.000000000 +0000
85@@ -1 +1 @@
86-5:0:10	6.1	20190727
87+5:0:10	6.1	20190728
88Index: c++/cursesapp.cc
89Prereq:  1.15
90--- ncurses-6.1-20190727+/c++/cursesapp.cc	2008-08-16 17:15:35.000000000 +0000
91+++ ncurses-6.1-20190728/c++/cursesapp.cc	2019-07-28 19:55:27.000000000 +0000
92@@ -1,6 +1,6 @@
93 // * this is for making emacs happy: -*-Mode: C++;-*-
94 /****************************************************************************
95- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
96+ * Copyright (c) 1998-2008,2019 Free Software Foundation, Inc.              *
97  *                                                                          *
98  * Permission is hereby granted, free of charge, to any person obtaining a  *
99  * copy of this software and associated documentation files (the            *
100@@ -35,7 +35,7 @@
101 #include "internal.h"
102 #include "cursesapp.h"
103
104-MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $")
105+MODULE_ID("$Id: cursesapp.cc,v 1.16 2019/07/28 19:55:27 tom Exp $")
106
107 void
108 NCursesApplication::init(bool bColors)
109@@ -68,7 +68,7 @@
110 NCursesWindow* NCursesApplication::titleWindow = 0;
111 NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0;
112
113-NCursesApplication::~NCursesApplication()
114+NCursesApplication::~NCursesApplication() THROWS(NCursesException)
115 {
116   Soft_Label_Key_Set* S;
117
118Index: c++/cursesapp.h
119Prereq:  1.12
120--- ncurses-6.1-20190727+/c++/cursesapp.h	2011-09-17 22:12:10.000000000 +0000
121+++ ncurses-6.1-20190728/c++/cursesapp.h	2019-07-28 19:55:27.000000000 +0000
122@@ -1,6 +1,6 @@
123 // * This makes emacs happy -*-Mode: C++;-*-
124 /****************************************************************************
125- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc.              *
126+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc.              *
127  *                                                                          *
128  * Permission is hereby granted, free of charge, to any person obtaining a  *
129  * copy of this software and associated documentation files (the            *
130@@ -31,7 +31,7 @@
131  *   Author: Juergen Pfeifer, 1997                                          *
132  ****************************************************************************/
133
134-// $Id: cursesapp.h,v 1.12 2011/09/17 22:12:10 tom Exp $
135+// $Id: cursesapp.h,v 1.13 2019/07/28 19:55:27 tom Exp $
136
137 #ifndef NCURSES_CURSESAPP_H_incl
138 #define NCURSES_CURSESAPP_H_incl
139@@ -106,7 +106,7 @@
140   }
141
142 public:
143-  virtual ~NCursesApplication();
144+  virtual ~NCursesApplication() THROWS(NCursesException);
145
146   // Get a pointer to the current application object
147   static NCursesApplication* getApplication() {
148Index: c++/cursesf.cc
149Prereq:  1.22
150--- ncurses-6.1-20190727+/c++/cursesf.cc	2011-09-17 22:12:10.000000000 +0000
151+++ ncurses-6.1-20190728/c++/cursesf.cc	2019-07-28 19:55:27.000000000 +0000
152@@ -1,6 +1,6 @@
153 // * this is for making emacs happy: -*-Mode: C++;-*-
154 /****************************************************************************
155- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc.              *
156+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc.              *
157  *                                                                          *
158  * Permission is hereby granted, free of charge, to any person obtaining a  *
159  * copy of this software and associated documentation files (the            *
160@@ -35,9 +35,9 @@
161 #include "cursesf.h"
162 #include "cursesapp.h"
163
164-MODULE_ID("$Id: cursesf.cc,v 1.22 2011/09/17 22:12:10 tom Exp $")
165+MODULE_ID("$Id: cursesf.cc,v 1.23 2019/07/28 19:55:27 tom Exp $")
166
167-NCursesFormField::~NCursesFormField ()
168+NCursesFormField::~NCursesFormField () THROWS(NCursesException)
169 {
170   if (field)
171     OnError(::free_field (field));
172@@ -149,7 +149,7 @@
173   setDefaultAttributes();
174 }
175
176-NCursesForm::~NCursesForm()
177+NCursesForm::~NCursesForm() THROWS(NCursesException)
178 {
179   UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(form));
180   delete hook;
181Index: c++/cursesf.h
182Prereq:  1.32
183--- ncurses-6.1-20190727+/c++/cursesf.h	2014-08-09 22:06:11.000000000 +0000
184+++ ncurses-6.1-20190728/c++/cursesf.h	2019-07-28 19:55:27.000000000 +0000
185@@ -1,6 +1,6 @@
186 // * This makes emacs happy -*-Mode: C++;-*-
187 /****************************************************************************
188- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
189+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
190  *                                                                          *
191  * Permission is hereby granted, free of charge, to any person obtaining a  *
192  * copy of this software and associated documentation files (the            *
193@@ -31,7 +31,7 @@
194  *   Author: Juergen Pfeifer, 1997                                          *
195  ****************************************************************************/
196
197-// $Id: cursesf.h,v 1.32 2014/08/09 22:06:11 Adam.Jiang Exp $
198+// $Id: cursesf.h,v 1.33 2019/07/28 19:55:27 tom Exp $
199
200 #ifndef NCURSES_CURSESF_H_incl
201 #define NCURSES_CURSESF_H_incl 1
202@@ -151,7 +151,7 @@
203   {
204   }
205
206-  virtual ~NCursesFormField ();
207+  virtual ~NCursesFormField () THROWS(NCursesException);
208
209   // Duplicate the field at a new position
210   inline NCursesFormField* dup(int first_row, int first_col)
211@@ -470,7 +470,7 @@
212   {
213   }
214
215-  virtual ~NCursesForm();
216+  virtual ~NCursesForm() THROWS(NCursesException);
217
218   // Set the default attributes for the form
219   virtual void setDefaultAttributes();
220@@ -645,7 +645,7 @@
221 	OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
222   }
223
224-  virtual ~NCursesUserField() {};
225+  virtual ~NCursesUserField() THROWS(NCursesException) {};
226
227   inline const T* UserData (void) const {
228     return reinterpret_cast<const T*>(::field_userptr (field));
229@@ -702,7 +702,7 @@
230 				     (p_UserData)));
231   };
232
233-  virtual ~NCursesUserForm() {
234+  virtual ~NCursesUserForm() THROWS(NCursesException) {
235   };
236
237   inline T* UserData (void) {
238Index: c++/cursesm.cc
239Prereq:  1.24
240--- ncurses-6.1-20190727+/c++/cursesm.cc	2017-06-26 08:32:53.000000000 +0000
241+++ ncurses-6.1-20190728/c++/cursesm.cc	2019-07-28 19:55:27.000000000 +0000
242@@ -1,6 +1,6 @@
243 // * this is for making emacs happy: -*-Mode: C++;-*-
244 /****************************************************************************
245- * Copyright (c) 1998-2011,2017 Free Software Foundation, Inc.              *
246+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
247  *                                                                          *
248  * Permission is hereby granted, free of charge, to any person obtaining a  *
249  * copy of this software and associated documentation files (the            *
250@@ -35,9 +35,9 @@
251 #include "cursesm.h"
252 #include "cursesapp.h"
253
254-MODULE_ID("$Id: cursesm.cc,v 1.24 2017/06/26 08:32:53 tom Exp $")
255+MODULE_ID("$Id: cursesm.cc,v 1.25 2019/07/28 19:55:27 tom Exp $")
256
257-NCursesMenuItem::~NCursesMenuItem()
258+NCursesMenuItem::~NCursesMenuItem() THROWS(NCursesException)
259 {
260   if (item)
261     OnError(::free_item(item));
262@@ -49,7 +49,7 @@
263   return FALSE;
264 }
265
266-NCursesMenuCallbackItem::~NCursesMenuCallbackItem()
267+NCursesMenuCallbackItem::~NCursesMenuCallbackItem() THROWS(NCursesException)
268 {
269 }
270
271@@ -175,7 +175,7 @@
272   }
273 }
274
275-NCursesMenu::~NCursesMenu()
276+NCursesMenu::~NCursesMenu() THROWS(NCursesException)
277 {
278   UserHook* hook = reinterpret_cast<UserHook*>(::menu_userptr(menu));
279   delete hook;
280Index: c++/cursesm.h
281Prereq:  1.30
282--- ncurses-6.1-20190727+/c++/cursesm.h	2014-08-09 22:06:18.000000000 +0000
283+++ ncurses-6.1-20190728/c++/cursesm.h	2019-07-28 19:55:27.000000000 +0000
284@@ -1,6 +1,6 @@
285 // * This makes emacs happy -*-Mode: C++;-*-
286 /****************************************************************************
287- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
288+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
289  *                                                                          *
290  * Permission is hereby granted, free of charge, to any person obtaining a  *
291  * copy of this software and associated documentation files (the            *
292@@ -31,7 +31,7 @@
293  *   Author: Juergen Pfeifer, 1997                                          *
294  ****************************************************************************/
295
296-// $Id: cursesm.h,v 1.30 2014/08/09 22:06:18 Adam.Jiang Exp $
297+// $Id: cursesm.h,v 1.31 2019/07/28 19:55:27 tom Exp $
298
299 #ifndef NCURSES_CURSESM_H_incl
300 #define NCURSES_CURSESM_H_incl 1
301@@ -85,7 +85,7 @@
302     (void) rhs;
303   }
304
305-  virtual ~NCursesMenuItem ();
306+  virtual ~NCursesMenuItem () THROWS(NCursesException);
307   // Release the items memory
308
309   inline const char* name () const {
310@@ -179,7 +179,7 @@
311   {
312   }
313
314-  virtual ~NCursesMenuCallbackItem();
315+  virtual ~NCursesMenuCallbackItem() THROWS(NCursesException);
316
317   bool action();
318 };
319@@ -332,7 +332,7 @@
320   {
321   }
322
323-  virtual ~NCursesMenu ();
324+  virtual ~NCursesMenu () THROWS(NCursesException);
325
326   // Retrieve the menus subwindow
327   inline NCursesWindow& subWindow() const {
328@@ -606,7 +606,7 @@
329 	OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData))));
330   }
331
332-  virtual ~NCursesUserItem() {}
333+  virtual ~NCursesUserItem() THROWS(NCursesException) {}
334
335   inline const T* UserData (void) const {
336     return reinterpret_cast<const T*>(::item_userptr (item));
337@@ -657,7 +657,7 @@
338 	set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
339   };
340
341-  virtual ~NCursesUserMenu() {
342+  virtual ~NCursesUserMenu() THROWS(NCursesException) {
343   };
344
345   inline T* UserData (void) {
346Index: c++/cursesp.cc
347Prereq:  1.25
348--- ncurses-6.1-20190727+/c++/cursesp.cc	2005-08-06 22:12:36.000000000 +0000
349+++ ncurses-6.1-20190728/c++/cursesp.cc	2019-07-28 19:55:27.000000000 +0000
350@@ -1,6 +1,6 @@
351 // * this is for making emacs happy: -*-Mode: C++;-*-
352 /****************************************************************************
353- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
354+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc.              *
355  *                                                                          *
356  * Permission is hereby granted, free of charge, to any person obtaining a  *
357  * copy of this software and associated documentation files (the            *
358@@ -34,7 +34,7 @@
359 #include "internal.h"
360 #include "cursesp.h"
361
362-MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $")
363+MODULE_ID("$Id: cursesp.cc,v 1.26 2019/07/28 19:55:27 tom Exp $")
364
365 NCursesPanel* NCursesPanel::dummy = static_cast<NCursesPanel*>(0);
366
367@@ -51,7 +51,7 @@
368   ::set_panel_userptr(p, reinterpret_cast<void *>(hook));
369 }
370
371-NCursesPanel::~NCursesPanel()
372+NCursesPanel::~NCursesPanel() THROWS(NCursesException)
373 {
374   UserHook* hook = UserPointer();
375   assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
376Index: c++/cursesp.h
377Prereq:  1.31
378--- ncurses-6.1-20190727+/c++/cursesp.h	2014-08-09 22:06:26.000000000 +0000
379+++ ncurses-6.1-20190728/c++/cursesp.h	2019-07-28 19:55:27.000000000 +0000
380@@ -1,6 +1,6 @@
381 // * This makes emacs happy -*-Mode: C++;-*-
382 /****************************************************************************
383- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
384+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
385  *                                                                          *
386  * Permission is hereby granted, free of charge, to any person obtaining a  *
387  * copy of this software and associated documentation files (the            *
388@@ -34,7 +34,7 @@
389 #ifndef NCURSES_CURSESP_H_incl
390 #define NCURSES_CURSESP_H_incl 1
391
392-// $Id: cursesp.h,v 1.31 2014/08/09 22:06:26 Adam.Jiang Exp $
393+// $Id: cursesp.h,v 1.32 2019/07/28 19:55:27 tom Exp $
394
395 #include <cursesw.h>
396
397@@ -131,7 +131,7 @@
398   {
399   }
400
401-  virtual ~NCursesPanel();
402+  virtual ~NCursesPanel() THROWS(NCursesException);
403
404   // basic manipulation
405   inline void hide()
406@@ -250,7 +250,7 @@
407   // This creates an user panel associated with the ::stdscr and user data
408   // pointed to by p_UserData.
409
410-  virtual ~NCursesUserPanel() {};
411+  virtual ~NCursesUserPanel() THROWS(NCursesException) {};
412
413   T* UserData (void)
414   {
415Index: c++/cursesw.cc
416Prereq:  1.54
417--- ncurses-6.1-20190727+/c++/cursesw.cc	2014-02-01 22:10:42.000000000 +0000
418+++ ncurses-6.1-20190728/c++/cursesw.cc	2019-07-28 19:55:27.000000000 +0000
419@@ -1,6 +1,6 @@
420 // * this is for making emacs happy: -*-Mode: C++;-*-
421 /****************************************************************************
422- * Copyright (c) 2007-2012,2014 Free Software Foundation, Inc.              *
423+ * Copyright (c) 2007-2014,2019 Free Software Foundation, Inc.              *
424  *                                                                          *
425  * Permission is hereby granted, free of charge, to any person obtaining a  *
426  * copy of this software and associated documentation files (the            *
427@@ -42,7 +42,7 @@
428 #include "internal.h"
429 #include "cursesw.h"
430
431-MODULE_ID("$Id: cursesw.cc,v 1.54 2014/02/01 22:10:42 tom Exp $")
432+MODULE_ID("$Id: cursesw.cc,v 1.55 2019/07/28 19:55:27 tom Exp $")
433
434 #define COLORS_NEED_INITIALIZATION  -1
435 #define COLORS_NOT_INITIALIZED       0
436@@ -344,7 +344,7 @@
437 }
438
439
440-NCursesWindow::~NCursesWindow()
441+NCursesWindow::~NCursesWindow() THROWS(NCursesException)
442 {
443     kill_subwindows();
444
445Index: c++/cursesw.h
446Prereq:  1.53
447--- ncurses-6.1-20190727+/c++/cursesw.h	2017-11-21 00:37:23.000000000 +0000
448+++ ncurses-6.1-20190728/c++/cursesw.h	2019-07-28 19:55:27.000000000 +0000
449@@ -1,7 +1,7 @@
450 // * This makes emacs happy -*-Mode: C++;-*-
451 // vile:cppmode
452 /****************************************************************************
453- * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc.              *
454+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
455  *                                                                          *
456  * Permission is hereby granted, free of charge, to any person obtaining a  *
457  * copy of this software and associated documentation files (the            *
458@@ -31,7 +31,7 @@
459 #ifndef NCURSES_CURSESW_H_incl
460 #define NCURSES_CURSESW_H_incl 1
461
462-// $Id: cursesw.h,v 1.53 2017/11/21 00:37:23 tom Exp $
463+// $Id: cursesw.h,v 1.54 2019/07/28 19:55:27 tom Exp $
464
465 extern "C" {
466 #  include   <curses.h>
467@@ -837,7 +837,7 @@
468   {
469   }
470
471-  virtual ~NCursesWindow();
472+  virtual ~NCursesWindow() THROWS(NCursesException);
473
474   NCursesWindow Clone();
475   // Make an exact copy of the window.
476@@ -1485,7 +1485,7 @@
477   {
478   }
479
480-  virtual ~NCursesPad() {}
481+  virtual ~NCursesPad() THROWS(NCursesException) {}
482
483   int echochar(const chtype ch) { return ::pechochar(w, ch); }
484   // Put the attributed character onto the pad and immediately do a
485@@ -1546,7 +1546,7 @@
486   }
487   // Construct the FramedPad with the given Window win as viewport.
488
489-  virtual ~NCursesFramedPad() {
490+  virtual ~NCursesFramedPad() THROWS(NCursesException) {
491     delete getSubWindow();
492   }
493
494Index: c++/cursslk.cc
495Prereq:  1.16
496--- ncurses-6.1-20190727+/c++/cursslk.cc	2012-02-23 10:41:56.000000000 +0000
497+++ ncurses-6.1-20190728/c++/cursslk.cc	2019-07-28 19:55:27.000000000 +0000
498@@ -1,6 +1,6 @@
499 // * this is for making emacs happy: -*-Mode: C++;-*-
500 /****************************************************************************
501- * Copyright (c) 1998-2005,2012 Free Software Foundation, Inc.              *
502+ * Copyright (c) 1998-2012,2019 Free Software Foundation, Inc.              *
503  *                                                                          *
504  * Permission is hereby granted, free of charge, to any person obtaining a  *
505  * copy of this software and associated documentation files (the            *
506@@ -35,7 +35,7 @@
507 #include "cursslk.h"
508 #include "cursesapp.h"
509
510-MODULE_ID("$Id: cursslk.cc,v 1.16 2012/02/23 10:41:56 tom Exp $")
511+MODULE_ID("$Id: cursslk.cc,v 1.17 2019/07/28 19:55:27 tom Exp $")
512
513 Soft_Label_Key_Set::Soft_Label_Key&
514   Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
515@@ -88,7 +88,7 @@
516   init();
517 }
518
519-Soft_Label_Key_Set::~Soft_Label_Key_Set() {
520+Soft_Label_Key_Set::~Soft_Label_Key_Set() THROWS(NCursesException) {
521   if (!::isendwin())
522     clear();
523   delete[] slk_array;
524Index: c++/cursslk.h
525Prereq:  1.13
526--- ncurses-6.1-20190727+/c++/cursslk.h	2005-05-28 21:58:18.000000000 +0000
527+++ ncurses-6.1-20190728/c++/cursslk.h	2019-07-28 19:55:27.000000000 +0000
528@@ -1,6 +1,6 @@
529 // * this is for making emacs happy: -*-Mode: C++;-*-
530 /****************************************************************************
531- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
532+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc.              *
533  *                                                                          *
534  * Permission is hereby granted, free of charge, to any person obtaining a  *
535  * copy of this software and associated documentation files (the            *
536@@ -31,7 +31,7 @@
537  *   Author: Juergen Pfeifer, 1997                                          *
538  ****************************************************************************/
539
540-// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $
541+// $Id: cursslk.h,v 1.14 2019/07/28 19:55:27 tom Exp $
542
543 #ifndef NCURSES_CURSSLK_H_incl
544 #define NCURSES_CURSSLK_H_incl
545@@ -161,7 +161,7 @@
546     init();		// allocate a new slk_array[]
547   }
548
549-  virtual ~Soft_Label_Key_Set();
550+  virtual ~Soft_Label_Key_Set() THROWS(NCursesException);
551
552   // Get Label# i. Label counting starts with 1!
553   NCURSES_IMPEXP Soft_Label_Key& operator[](int i);
554Index: c++/demo.cc
555Prereq:  1.43
556--- ncurses-6.1-20190727+/c++/demo.cc	2018-06-24 00:07:22.000000000 +0000
557+++ ncurses-6.1-20190728/c++/demo.cc	2019-07-28 19:55:27.000000000 +0000
558@@ -1,6 +1,6 @@
559 // * This makes emacs happy -*-Mode: C++;-*-
560 /****************************************************************************
561- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
562+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
563  *                                                                          *
564  * Permission is hereby granted, free of charge, to any person obtaining a  *
565  * copy of this software and associated documentation files (the            *
566@@ -35,7 +35,7 @@
567  *   Demo code for NCursesMenu and NCursesForm written by
568  *   Juergen Pfeifer
569  *
570- * $Id: demo.cc,v 1.43 2018/06/24 00:07:22 tom Exp $
571+ * $Id: demo.cc,v 1.44 2019/07/28 19:55:27 tom Exp $
572  */
573
574 #include "internal.h"
575@@ -176,7 +176,7 @@
576     : NCursesUserItem<T>(p_name, static_cast<const char*>(0), p_UserData)
577   {}
578
579-  virtual ~MyAction() {}
580+  virtual ~MyAction() THROWS(NCursesException) {}
581
582   bool action() {
583     SillyDemo a;
584@@ -295,7 +295,7 @@
585   {
586   }
587
588-  ~TestForm() {
589+  ~TestForm() THROWS(NCursesException) {
590     delete mft;
591     delete ift;
592     delete eft;
593@@ -473,7 +473,7 @@
594   {
595   }
596
597-  ~MyMenu()
598+  ~MyMenu() THROWS(NCursesException)
599   {
600     P->hide();
601     delete P;
602Index: dist.mk
603Prereq:  1.1297
604--- ncurses-6.1-20190727+/dist.mk	2019-07-26 23:10:14.000000000 +0000
605+++ ncurses-6.1-20190728/dist.mk	2019-07-28 10:39:10.000000000 +0000
606@@ -25,7 +25,7 @@
607 # use or other dealings in this Software without prior written               #
608 # authorization.                                                             #
609 ##############################################################################
610-# $Id: dist.mk,v 1.1297 2019/07/26 23:10:14 tom Exp $
611+# $Id: dist.mk,v 1.1298 2019/07/28 10:39:10 tom Exp $
612 # Makefile for creating ncurses distributions.
613 #
614 # This only needs to be used directly as a makefile by developers, but
615@@ -37,7 +37,7 @@
616 # These define the major/minor/patch versions of ncurses.
617 NCURSES_MAJOR = 6
618 NCURSES_MINOR = 1
619-NCURSES_PATCH = 20190727
620+NCURSES_PATCH = 20190728
621
622 # We don't append the patch to the version, since this only applies to releases
623 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
624Index: doc/hackguide.doc
625--- ncurses-6.1-20190727+/doc/hackguide.doc	2017-05-06 18:13:38.000000000 +0000
626+++ ncurses-6.1-20190728/doc/hackguide.doc	2019-07-28 18:09:46.000000000 +0000
627@@ -205,7 +205,7 @@
628        If  your bug produces a core-dump, please include a symbolic stack
629        trace generated by gdb(1) or your local equivalent.
630        Tell  us about every terminal on which you have reproduced the bug
631-       --  and  every  terminal  on  which  you  cannot. Ideally, sent us
632+       --  and  every  terminal  on  which  you  cannot. Ideally, send us
633        terminfo sources for all of these (yours might differ from ours).
634        Include  your ncurses version and your OS/machine type, of course!
635        You can find your ncurses version in the curses.h file.
636@@ -352,10 +352,10 @@
637
638    Here are some more details about mouse event handling:
639
640-   The lib_mouse()code is logically split into a lower level that accepts
641-   event  reports  in  a  device-dependent format and an upper level that
642-   parses mouse gestures and filters events. The mediating data structure
643-   is a circular queue of event structures.
644+   The  lib_mouse()  code  is  logically  split  into  a lower level that
645+   accepts  event reports in a device-dependent format and an upper level
646+   that  parses  mouse  gestures  and  filters events. The mediating data
647+   structure is a circular queue of event structures.
648
649    Functionally, the lower level's job is to pick up primitive events and
650    put  them  on  the circular queue. This can happen in one of two ways:
651@@ -382,24 +382,23 @@
652    The  brains  of this operation are the modules hashmap.c, hardscroll.c
653    and  lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
654    happens looks like this:
655-
656-   The  hashmap.c  module tries to detect vertical motion changes between
657-   the  real  and virtual screens. This information is represented by the
658-   oldindex  members  in  the  newscr  structure.  These  are modified by
659-   vertical-motion  and  clear  operations,  and  both are re-initialized
660-   after each update. To this change-journalling information, the hashmap
661-   code  adds  deductions  made using a modified Heckel algorithm on hash
662-   values generated from the line contents.
663-
664-   The  hardscroll.c module computes an optimum set of scroll, insertion,
665-   and   deletion   operations  to  make  the  indices  match.  It  calls
666-   _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
667-
668-   Then  lib_doupdate.c  goes  to  work.  Its  job  is to do line-by-line
669-   transformations  of curscr lines to newscr lines. Its main tool is the
670-   routine  mvcur()  in  lib_mvcur.c.  This  routine does cursor-movement
671-   optimization,  attempting to get from given screen location A to given
672-   location B in the fewest output characters possible.
673+     * The  hashmap.c  module  tries  to  detect  vertical motion changes
674+       between   the  real  and  virtual  screens.  This  information  is
675+       represented by the oldindex members in the newscr structure. These
676+       are modified by vertical-motion and clear operations, and both are
677+       re-initialized  after  each  update.  To  this  change-journalling
678+       information,  the  hashmap  code  adds  deductions  made  using  a
679+       modified  Heckel  algorithm on hash values generated from the line
680+       contents.
681+     * The  hardscroll.c  module  computes  an  optimum  set  of  scroll,
682+       insertion,  and  deletion operations to make the indices match. It
683+       calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
684+     * Then  lib_doupdate.c  goes  to work. Its job is to do line-by-line
685+       transformations  of curscr lines to newscr lines. Its main tool is
686+       the   routine   mvcur()   in   lib_mvcur.c.   This   routine  does
687+       cursor-movement  optimization, attempting to get from given screen
688+       location  A  to  given  location B in the fewest output characters
689+       possible.
690
691    If  you  want to work on screen optimizations, you should use the fact
692    that  (in  the  trace-enabled  version  of  the  library) enabling the
693Index: doc/html/hackguide.html
694Prereq:  1.31
695--- ncurses-6.1-20190727+/doc/html/hackguide.html	2019-03-16 19:39:05.000000000 +0000
696+++ ncurses-6.1-20190728/doc/html/hackguide.html	2019-07-28 18:08:54.000000000 +0000
697@@ -1,5 +1,5 @@
698 <!--
699-  $Id: hackguide.html,v 1.31 2019/03/16 19:39:05 tom Exp $
700+  $Id: hackguide.html,v 1.32 2019/07/28 18:08:54 tom Exp $
701   ****************************************************************************
702   * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
703   *                                                                          *
704@@ -33,7 +33,7 @@
705 <html>
706 <head>
707   <meta name="generator" content=
708-  "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
709+  "HTML Tidy for HTML5 for Linux version 5.2.0">
710
711   <title>A Hacker's Guide to Ncurses Internals</title>
712   <link rel="author" href="mailto:bugs-ncurses@gnu.org">
713@@ -63,8 +63,7 @@
714       </ul>
715     </li>
716
717-    <li><a href="#portability">Portability and
718-    Configuration</a></li>
719+    <li><a href="#portability">Portability and Configuration</a></li>
720
721     <li><a href="#documentation">Documentation Conventions</a></li>
722
723@@ -233,7 +232,8 @@
724     These have to be viewable through traditional <em>man(1)</em>
725     programs.</li>
726
727-    <li><strong>Write everything else in HTML.</strong></li>
728+    <li><strong>Write everything else in HTML.</strong>
729+    </li>
730   </ol>
731
732   <p>When in doubt, HTMLize a master and use <em>lynx(1)</em> to
733@@ -256,6 +256,7 @@
734   majordomo list; to join, write to
735   <code>bug-ncurses-request@gnu.org</code> with a message
736   containing the line:</p>
737+
738   <pre>
739              subscribe &lt;name&gt;@&lt;host.domain&gt;
740 </pre>
741@@ -365,7 +366,7 @@
742
743       <p>Tell us about every terminal on which you have reproduced
744       the bug &mdash; and every terminal on which you cannot.
745-      Ideally, sent us terminfo sources for all of these (yours
746+      Ideally, send us terminfo sources for all of these (yours
747       might differ from ours).</p>
748
749       <p>Include your ncurses version and your OS/machine type, of
750@@ -547,7 +548,7 @@
751
752   <p>Here are some more details about mouse event handling:</p>
753
754-  <p>The <code>lib_mouse()</code>code is logically split into a
755+  <p>The <code>lib_mouse()</code> code is logically split into a
756   lower level that accepts event reports in a device-dependent
757   format and an upper level that parses mouse gestures and filters
758   events. The mediating data structure is a circular queue of event
759@@ -566,8 +567,7 @@
760   reports (low-level events) into a gesture (a high-level or
761   composite event).</p>
762
763-  <h3><a name="output" id="output">Output and Screen
764-  Updating</a></h3>
765+  <h3><a name="output" id="output">Output and Screen Updating</a></h3>
766
767   <p>With the single exception of character echoes during a
768   <code>wgetnstr()</code> call (which simulates cooked-mode line
769@@ -585,27 +585,35 @@
770   <code>lib_mvcur.c</code>. Essentially, what happens looks like
771   this:</p>
772
773-  <p>The <code>hashmap.c</code> module tries to detect vertical
774-  motion changes between the real and virtual screens. This
775-  information is represented by the oldindex members in the newscr
776-  structure. These are modified by vertical-motion and clear
777-  operations, and both are re-initialized after each update. To
778-  this change-journalling information, the hashmap code adds
779-  deductions made using a modified Heckel algorithm on hash values
780-  generated from the line contents.</p>
781-
782-  <p>The <code>hardscroll.c</code> module computes an optimum set
783-  of scroll, insertion, and deletion operations to make the indices
784-  match. It calls <code>_nc_mvcur_scrolln()</code> in
785-  <code>lib_mvcur.c</code> to do those motions.</p>
786-
787-  <p>Then <code>lib_doupdate.c</code> goes to work. Its job is to
788-  do line-by-line transformations of <code>curscr</code> lines to
789-  <code>newscr</code> lines. Its main tool is the routine
790-  <code>mvcur()</code> in <code>lib_mvcur.c</code>. This routine
791-  does cursor-movement optimization, attempting to get from given
792-  screen location A to given location B in the fewest output
793-  characters possible.</p>
794+  <ul>
795+    <li>
796+      <p>The <code>hashmap.c</code> module tries to detect vertical
797+      motion changes between the real and virtual screens. This
798+      information is represented by the oldindex members in the
799+      newscr structure. These are modified by vertical-motion and
800+      clear operations, and both are re-initialized after each
801+      update. To this change-journalling information, the hashmap
802+      code adds deductions made using a modified Heckel algorithm
803+      on hash values generated from the line contents.</p>
804+    </li>
805+
806+    <li>
807+      <p>The <code>hardscroll.c</code> module computes an optimum
808+      set of scroll, insertion, and deletion operations to make the
809+      indices match. It calls <code>_nc_mvcur_scrolln()</code> in
810+      <code>lib_mvcur.c</code> to do those motions.</p>
811+    </li>
812+
813+    <li>
814+      <p>Then <code>lib_doupdate.c</code> goes to work. Its job is
815+      to do line-by-line transformations of <code>curscr</code>
816+      lines to <code>newscr</code> lines. Its main tool is the
817+      routine <code>mvcur()</code> in <code>lib_mvcur.c</code>.
818+      This routine does cursor-movement optimization, attempting to
819+      get from given screen location A to given location B in the
820+      fewest output characters possible.</p>
821+    </li>
822+  </ul>
823
824   <p>If you want to work on screen optimizations, you should use
825   the fact that (in the trace-enabled version of the library)
826@@ -621,8 +629,7 @@
827   <code>include/curses.h.in</code> for mask values, near the
828   end.</p>
829
830-  <h1><a name="fmnote" id="fmnote">The Forms and Menu
831-  Libraries</a></h1>
832+  <h1><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h1>
833
834   <p>The forms and menu libraries should work reliably in any
835   environment you can port ncurses to. The only portability issue
836@@ -639,8 +646,7 @@
837   This version has been slightly cleaned up for
838   <code>ncurses</code>.</p>
839
840-  <h1><a name="tic" id="tic">A Tour of the Terminfo
841-  Compiler</a></h1>
842+  <h1><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h1>
843
844   <p>The <strong>ncurses</strong> implementation of
845   <strong>tic</strong> is rather complex internally; it has to do a
846@@ -950,11 +956,13 @@
847
848     <dd>gettimeofday(), select().</dd>
849   </dl>
850+
851   <hr>
852
853   <address>
854     Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
855-  </address>(Note: This is <em>not</em> the <a href="#bugtrack">bug
856+  </address>
857+  (Note: This is <em>not</em> the <a href="#bugtrack">bug
858   address</a>!)
859 </body>
860 </html>
861Index: doc/html/ncurses-intro.html
862Prereq:  1.51
863--- ncurses-6.1-20190727+/doc/html/ncurses-intro.html	2019-07-27 11:47:10.000000000 +0000
864+++ ncurses-6.1-20190728/doc/html/ncurses-intro.html	2019-07-28 16:53:26.000000000 +0000
865@@ -1,5 +1,5 @@
866 <!--
867-  $Id: ncurses-intro.html,v 1.51 2019/07/27 11:47:10 tom Exp $
868+  $Id: ncurses-intro.html,v 1.53 2019/07/28 16:53:26 tom Exp $
869   ****************************************************************************
870   * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
871   *                                                                          *
872@@ -352,28 +352,30 @@
873
874   <p>Historically, the first ancestor of <code>curses</code> was
875   the routines written to provide screen-handling for the
876-  <code>vi</code> editor; these used the already-existing
877-  <code>termcap</code> database facility for describing terminal
878+  <code>vi</code> editor; these used the <code>termcap</code>
879+  database facility (both released in 3BSD) for describing terminal
880   capabilities. These routines were abstracted into a documented
881   library and first released with the early BSD UNIX versions. All
882-  of this work was done by students at the University of
883-  California.</p>
884+  of this work was done by students at the University of California
885+  (Berkeley campus). The curses library was first published in
886+  4.0BSD, a year after 3BSD (i.e., late 1980).</p>
887
888   <p>After graduation, one of those students went to work at
889   AT&amp;T Bell Labs, and made an improved <code>termcap</code>
890   library called <code>terminfo</code> (i.e.,
891-  &ldquo;libterm&rdquo;). That was subsequently released in System
892-  V Release 2. Thereafter, other developers added to the terminfo
893-  library. For instance, a student at Cornell University wrote an
894-  improved terminfo library as well as a tool (<code>tic</code>) to
895-  compile the terminal descriptions. As a general rule, AT&amp;T
896-  did not identify the developers in the source-code or
897-  documentation; the <code>tic</code> and <code>infocmp</code>
898-  programs are the exceptions.</p>
899+  &ldquo;libterm&rdquo;), and adapted the curses library to use
900+  this. That was subsequently released in System V Release 2 (early
901+  1984). Thereafter, other developers added to the curses and
902+  terminfo libraries. For instance, a student at Cornell University
903+  wrote an improved terminfo library as well as a tool
904+  (<code>tic</code>) to compile the terminal descriptions. As a
905+  general rule, AT&amp;T did not identify the developers in the
906+  source-code or documentation; the <code>tic</code> and
907+  <code>infocmp</code> programs are the exceptions.</p>
908
909   <p>System V Release 3 (System III UNIX) from Bell Labs featured a
910-  rewritten and much-improved <code>curses</code> library,l along
911-  with the <code>tic</code> program.</p>
912+  rewritten and much-improved <code>curses</code> library, along
913+  with the <code>tic</code> program (late 1986).</p>
914
915   <p>To recap, terminfo is based on Berkeley's termcap database,
916   but contains a number of improvements and extensions.
917Index: doc/ncurses-intro.doc
918--- ncurses-6.1-20190727+/doc/ncurses-intro.doc	2019-07-27 11:47:44.000000000 +0000
919+++ ncurses-6.1-20190728/doc/ncurses-intro.doc	2019-07-28 18:09:40.000000000 +0000
920@@ -132,16 +132,19 @@
921 A Brief History of Curses
922
923    Historically, the first ancestor of curses was the routines written to
924-   provide   screen-handling   for   the   vi   editor;  these  used  the
925-   already-existing  termcap  database  facility  for describing terminal
926+   provide  screen-handling  for  the  vi  editor; these used the termcap
927+   database  facility  (both  released  in  3BSD) for describing terminal
928    capabilities. These routines were abstracted into a documented library
929    and  first released with the early BSD UNIX versions. All of this work
930-   was done by students at the University of California.
931+   was  done  by  students  at  the  University  of  California (Berkeley
932+   campus).  The  curses  library  was  first published in 4.0BSD, a year
933+   after 3BSD (i.e., late 1980).
934
935    After  graduation,  one  of  those  students went to work at AT&T Bell
936    Labs,  and  made  an  improved  termcap library called terminfo (i.e.,
937-   "libterm").  That  was  subsequently  released  in System V Release 2.
938-   Thereafter,  other  developers  added  to  the  terminfo  library. For
939+   "libterm"),  and  adapted  the  curses  library  to use this. That was
940+   subsequently  released in System V Release 2 (early 1984). Thereafter,
941+   other  developers  added  to  the  curses  and terminfo libraries. For
942    instance,  a  student at Cornell University wrote an improved terminfo
943    library  as well as a tool (tic) to compile the terminal descriptions.
944    As  a  general  rule,  AT&T  did  not  identify  the developers in the
945@@ -149,8 +152,8 @@
946    exceptions.
947
948    System  V  Release  3  (System  III  UNIX)  from  Bell Labs featured a
949-   rewritten  and  much-improved  curses  library,l  along  with  the tic
950-   program.
951+   rewritten and much-improved curses library, along with the tic program
952+   (late 1986).
953
954    To  recap,  terminfo  is  based  on  Berkeley's  termcap database, but
955    contains  a  number  of  improvements  and  extensions.  Parameterized
956Index: ncurses/curses.priv.h
957Prereq:  1.624
958--- ncurses-6.1-20190727+/ncurses/curses.priv.h	2019-06-23 15:20:49.000000000 +0000
959+++ ncurses-6.1-20190728/ncurses/curses.priv.h	2019-07-28 18:32:05.000000000 +0000
960@@ -34,7 +34,7 @@
961  ****************************************************************************/
962
963 /*
964- * $Id: curses.priv.h,v 1.624 2019/06/23 15:20:49 tom Exp $
965+ * $Id: curses.priv.h,v 1.625 2019/07/28 18:32:05 tom Exp $
966  *
967  *	curses.priv.h
968  *
969@@ -2178,18 +2178,20 @@
970
971 #define SETUP_FAIL ERR
972
973-#define ret_error(code, fmt, arg)	if (errret) {\
974-					    *errret = code;\
975+#define ret_error(rc, fmt, p, q)	if (errret) {\
976+					    *errret = rc;\
977+					    q;\
978 					    returnCode(SETUP_FAIL);\
979 					} else {\
980-					    fprintf(stderr, fmt, arg);\
981+					    fprintf(stderr, fmt, p);\
982+					    q;\
983 					    ExitTerminfo(EXIT_FAILURE);\
984 					}
985
986-#define ret_error1(code, fmt, arg)	ret_error(code, "'%s': " fmt, arg)
987+#define ret_error1(rc, fmt, p, q)	ret_error(rc, "'%s': " fmt, p, q)
988
989-#define ret_error0(code, msg)		if (errret) {\
990-					    *errret = code;\
991+#define ret_error0(rc, msg)		if (errret) {\
992+					    *errret = rc;\
993 					    returnCode(SETUP_FAIL);\
994 					} else {\
995 					    fprintf(stderr, msg);\
996Index: ncurses/tinfo/MKuserdefs.sh
997Prereq:  1.8
998--- ncurses-6.1-20190727+/ncurses/tinfo/MKuserdefs.sh	2019-03-17 00:46:17.000000000 +0000
999+++ ncurses-6.1-20190728/ncurses/tinfo/MKuserdefs.sh	2019-07-28 19:12:18.000000000 +0000
1000@@ -26,7 +26,7 @@
1001 # use or other dealings in this Software without prior written               #
1002 # authorization.                                                             #
1003 ##############################################################################
1004-# $Id: MKuserdefs.sh,v 1.8 2019/03/17 00:46:17 tom Exp $
1005+# $Id: MKuserdefs.sh,v 1.9 2019/07/28 19:12:18 tom Exp $
1006 AWK=${1-awk}; shift 1
1007 OPT1=${1-0}; shift 1
1008
1009@@ -55,6 +55,8 @@
1010
1011 cat <<EOF
1012
1013+#define USERTABSIZE SIZEOF(user_names_data)
1014+
1015 #if $OPT1
1016 static void
1017 next_string(const char *strings, unsigned *offset)
1018@@ -68,11 +70,11 @@
1019 		const char *strings)
1020 {
1021     if (*actual == 0) {
1022-	*actual = typeCalloc(struct user_table_entry, CAPTABSIZE);
1023+	*actual = typeCalloc(struct user_table_entry, USERTABSIZE);
1024 	if (*actual != 0) {
1025 	    unsigned n;
1026 	    unsigned len = 0;
1027-	    for (n = 0; n < CAPTABSIZE; ++n) {
1028+	    for (n = 0; n < USERTABSIZE; ++n) {
1029 		(*actual)[n].ute_name = strings + len;
1030 		(*actual)[n].ute_type = (int) source[n].ute_type;
1031 		(*actual)[n].ute_argc = source[n].ute_argc;
1032Index: ncurses/tinfo/lib_setup.c
1033Prereq:  1.200
1034--- ncurses-6.1-20190727+/ncurses/tinfo/lib_setup.c	2019-06-22 00:15:32.000000000 +0000
1035+++ ncurses-6.1-20190728/ncurses/tinfo/lib_setup.c	2019-07-28 19:33:40.000000000 +0000
1036@@ -48,7 +48,7 @@
1037 #include <locale.h>
1038 #endif
1039
1040-MODULE_ID("$Id: lib_setup.c,v 1.200 2019/06/22 00:15:32 tom Exp $")
1041+MODULE_ID("$Id: lib_setup.c,v 1.202 2019/07/28 19:33:40 tom Exp $")
1042
1043 /****************************************************************************
1044  *
1045@@ -662,7 +662,8 @@
1046     if (strlen(myname) > MAX_NAME_SIZE) {
1047 	ret_error(TGETENT_ERR,
1048 		  "TERM environment must be <= %d characters.\n",
1049-		  MAX_NAME_SIZE);
1050+		  MAX_NAME_SIZE,
1051+		  free(myname));
1052     }
1053
1054     T(("your terminal name is %s", myname));
1055@@ -713,8 +714,9 @@
1056 	termp = typeCalloc(TERMINAL, 1);
1057 #endif
1058 	if (termp == 0) {
1059-	    ret_error0(TGETENT_ERR,
1060-		       "Not enough memory to create terminal structure.\n");
1061+	    ret_error1(TGETENT_ERR,
1062+		       "Not enough memory to create terminal structure.\n",
1063+		       myname, free(myname));
1064 	}
1065 #if HAVE_SYSCONF
1066 	{
1067@@ -742,8 +744,9 @@
1068 	    termp->Filedes = (short) Filedes;
1069 	    termp->_termname = strdup(myname);
1070 	} else {
1071-	    ret_error0(errret ? *errret : TGETENT_ERR,
1072-		       "Could not find any driver to handle this terminal.\n");
1073+	    ret_error1(errret ? *errret : TGETENT_ERR,
1074+		       "Could not find any driver to handle terminal.\n",
1075+		       myname, free(myname));
1076 	}
1077 #else
1078 #if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
1079@@ -768,9 +771,11 @@
1080 	if (status != TGETENT_YES) {
1081 	    del_curterm(termp);
1082 	    if (status == TGETENT_ERR) {
1083+		free(myname);
1084 		ret_error0(status, "terminals database is inaccessible\n");
1085 	    } else if (status == TGETENT_NO) {
1086-		ret_error1(status, "unknown terminal type.\n", myname);
1087+		ret_error1(status, "unknown terminal type.\n",
1088+			   myname, free(myname));
1089 	    }
1090 	}
1091 #if NCURSES_EXT_NUMBERS
1092@@ -828,13 +833,16 @@
1093 	if ((VALID_STRING(cursor_address)
1094 	     || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
1095 	    && VALID_STRING(clear_screen)) {
1096-	    ret_error1(TGETENT_YES, "terminal is not really generic.\n", myname);
1097+	    ret_error1(TGETENT_YES, "terminal is not really generic.\n",
1098+		       myname, free(myname));
1099 	} else {
1100 	    del_curterm(termp);
1101-	    ret_error1(TGETENT_NO, "I need something more specific.\n", myname);
1102+	    ret_error1(TGETENT_NO, "I need something more specific.\n",
1103+		       myname, free(myname));
1104 	}
1105     } else if (hard_copy) {
1106-	ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", myname);
1107+	ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
1108+		   myname, free(myname));
1109     }
1110 #endif
1111     free(myname);
1112Index: ncurses/tinfo/tinfo_driver.c
1113Prereq:  1.63
1114--- ncurses-6.1-20190727+/ncurses/tinfo/tinfo_driver.c	2018-11-24 22:17:03.000000000 +0000
1115+++ ncurses-6.1-20190728/ncurses/tinfo/tinfo_driver.c	2019-07-28 18:43:09.000000000 +0000
1116@@ -1,5 +1,5 @@
1117 /****************************************************************************
1118- * Copyright (c) 2008-2017,2018 Free Software Foundation, Inc.              *
1119+ * Copyright (c) 2008-2018,2019 Free Software Foundation, Inc.              *
1120  *                                                                          *
1121  * Permission is hereby granted, free of charge, to any person obtaining a  *
1122  * copy of this software and associated documentation files (the            *
1123@@ -51,7 +51,7 @@
1124 # endif
1125 #endif
1126
1127-MODULE_ID("$Id: tinfo_driver.c,v 1.63 2018/11/24 22:17:03 tom Exp $")
1128+MODULE_ID("$Id: tinfo_driver.c,v 1.64 2019/07/28 18:43:09 tom Exp $")
1129
1130 /*
1131  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
1132@@ -144,6 +144,8 @@
1133 #undef SETUP_FAIL
1134 #define SETUP_FAIL FALSE
1135
1136+#define NO_COPY {}
1137+
1138 static bool
1139 drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
1140 {
1141@@ -184,7 +186,8 @@
1142 	if (status == TGETENT_ERR) {
1143 	    ret_error0(status, "terminals database is inaccessible\n");
1144 	} else if (status == TGETENT_NO) {
1145-	    ret_error1(status, "unknown terminal type.\n", tname);
1146+	    ret_error1(status, "unknown terminal type.\n",
1147+		       tname, NO_COPY);
1148 	}
1149     }
1150     result = TRUE;
1151@@ -225,15 +228,18 @@
1152 	     || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
1153 	    && VALID_STRING(clear_screen)) {
1154 	    cleanup_termtype();
1155-	    ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
1156+	    ret_error1(TGETENT_YES, "terminal is not really generic.\n",
1157+		       tname, NO_COPY);
1158 	} else {
1159 	    cleanup_termtype();
1160-	    ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
1161+	    ret_error1(TGETENT_NO, "I need something more specific.\n",
1162+		       tname, NO_COPY);
1163 	}
1164     }
1165     if (hard_copy) {
1166 	cleanup_termtype();
1167-	ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
1168+	ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
1169+		   tname, NO_COPY);
1170     }
1171
1172     returnBool(result);
1173Index: package/debian-mingw/changelog
1174--- ncurses-6.1-20190727+/package/debian-mingw/changelog	2019-07-26 23:10:14.000000000 +0000
1175+++ ncurses-6.1-20190728/package/debian-mingw/changelog	2019-07-28 10:39:10.000000000 +0000
1176@@ -1,8 +1,8 @@
1177-ncurses6 (6.1+20190727) unstable; urgency=low
1178+ncurses6 (6.1+20190728) unstable; urgency=low
1179
1180   * latest weekly patch
1181
1182- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
1183+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
1184
1185 ncurses6 (5.9-20131005) unstable; urgency=low
1186
1187Index: package/debian-mingw64/changelog
1188--- ncurses-6.1-20190727+/package/debian-mingw64/changelog	2019-07-26 23:10:14.000000000 +0000
1189+++ ncurses-6.1-20190728/package/debian-mingw64/changelog	2019-07-28 10:39:10.000000000 +0000
1190@@ -1,8 +1,8 @@
1191-ncurses6 (6.1+20190727) unstable; urgency=low
1192+ncurses6 (6.1+20190728) unstable; urgency=low
1193
1194   * latest weekly patch
1195
1196- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
1197+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
1198
1199 ncurses6 (5.9-20131005) unstable; urgency=low
1200
1201Index: package/debian/changelog
1202--- ncurses-6.1-20190727+/package/debian/changelog	2019-07-26 23:10:14.000000000 +0000
1203+++ ncurses-6.1-20190728/package/debian/changelog	2019-07-28 10:39:10.000000000 +0000
1204@@ -1,8 +1,8 @@
1205-ncurses6 (6.1+20190727) unstable; urgency=low
1206+ncurses6 (6.1+20190728) unstable; urgency=low
1207
1208   * latest weekly patch
1209
1210- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
1211+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
1212
1213 ncurses6 (5.9-20120608) unstable; urgency=low
1214
1215Index: package/mingw-ncurses.nsi
1216Prereq:  1.343
1217--- ncurses-6.1-20190727+/package/mingw-ncurses.nsi	2019-07-26 23:10:14.000000000 +0000
1218+++ ncurses-6.1-20190728/package/mingw-ncurses.nsi	2019-07-28 10:39:10.000000000 +0000
1219@@ -1,4 +1,4 @@
1220-; $Id: mingw-ncurses.nsi,v 1.343 2019/07/26 23:10:14 tom Exp $
1221+; $Id: mingw-ncurses.nsi,v 1.344 2019/07/28 10:39:10 tom Exp $
1222
1223 ; TODO add examples
1224 ; TODO bump ABI to 6
1225@@ -10,7 +10,7 @@
1226 !define VERSION_MAJOR "6"
1227 !define VERSION_MINOR "1"
1228 !define VERSION_YYYY  "2019"
1229-!define VERSION_MMDD  "0727"
1230+!define VERSION_MMDD  "0728"
1231 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
1232
1233 !define MY_ABI   "5"
1234Index: package/mingw-ncurses.spec
1235--- ncurses-6.1-20190727+/package/mingw-ncurses.spec	2019-07-26 23:10:14.000000000 +0000
1236+++ ncurses-6.1-20190728/package/mingw-ncurses.spec	2019-07-28 10:39:10.000000000 +0000
1237@@ -3,7 +3,7 @@
1238 Summary: shared libraries for terminal handling
1239 Name: mingw32-ncurses6
1240 Version: 6.1
1241-Release: 20190727
1242+Release: 20190728
1243 License: X11
1244 Group: Development/Libraries
1245 Source: ncurses-%{version}-%{release}.tgz
1246Index: package/ncurses.spec
1247--- ncurses-6.1-20190727+/package/ncurses.spec	2019-07-26 23:10:14.000000000 +0000
1248+++ ncurses-6.1-20190728/package/ncurses.spec	2019-07-28 10:39:10.000000000 +0000
1249@@ -1,7 +1,7 @@
1250 Summary: shared libraries for terminal handling
1251 Name: ncurses6
1252 Version: 6.1
1253-Release: 20190727
1254+Release: 20190728
1255 License: X11
1256 Group: Development/Libraries
1257 Source: ncurses-%{version}-%{release}.tgz
1258Index: package/ncursest.spec
1259--- ncurses-6.1-20190727+/package/ncursest.spec	2019-07-26 23:10:14.000000000 +0000
1260+++ ncurses-6.1-20190728/package/ncursest.spec	2019-07-28 10:39:10.000000000 +0000
1261@@ -1,7 +1,7 @@
1262 Summary: Curses library with POSIX thread support.
1263 Name: ncursest6
1264 Version: 6.1
1265-Release: 20190727
1266+Release: 20190728
1267 License: X11
1268 Group: Development/Libraries
1269 Source: ncurses-%{version}-%{release}.tgz
1270Index: progs/tput.c
1271Prereq:  1.79
1272--- ncurses-6.1-20190727+/progs/tput.c	2018-06-30 15:56:01.000000000 +0000
1273+++ ncurses-6.1-20190728/progs/tput.c	2019-07-28 18:18:41.000000000 +0000
1274@@ -1,5 +1,5 @@
1275 /****************************************************************************
1276- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
1277+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
1278  *                                                                          *
1279  * Permission is hereby granted, free of charge, to any person obtaining a  *
1280  * copy of this software and associated documentation files (the            *
1281@@ -50,7 +50,7 @@
1282 #include <transform.h>
1283 #include <tty_settings.h>
1284
1285-MODULE_ID("$Id: tput.c,v 1.79 2018/06/30 15:56:01 Nicholas.Marriott Exp $")
1286+MODULE_ID("$Id: tput.c,v 1.80 2019/07/28 18:18:41 tom Exp $")
1287
1288 #define PUTS(s)		fputs(s, stdout)
1289
1290@@ -230,7 +230,7 @@
1291 	     * representations
1292 	     */
1293
1294-	    for (k = 1; k < argc; k++) {
1295+	    for (k = 1; (k < argc) && (k < NUM_PARM); k++) {
1296 		char *tmp = 0;
1297 		strings[k] = argv[k];
1298 		numbers[k] = strtol(argv[k], &tmp, 0);
1299Index: test/test_sgr.c
1300Prereq:  1.12
1301--- ncurses-6.1-20190727+/test/test_sgr.c	2019-06-22 00:20:06.000000000 +0000
1302+++ ncurses-6.1-20190728/test/test_sgr.c	2019-07-28 18:13:39.000000000 +0000
1303@@ -29,7 +29,7 @@
1304 /*
1305  * Author: Thomas E. Dickey
1306  *
1307- * $Id: test_sgr.c,v 1.12 2019/06/22 00:20:06 tom Exp $
1308+ * $Id: test_sgr.c,v 1.13 2019/07/28 18:13:39 tom Exp $
1309  *
1310  * A simple demo of the sgr/sgr0 terminal capabilities.
1311  */
1312@@ -299,6 +299,7 @@
1313 	    free(values[count]);
1314 	}
1315     }
1316+    free(my_name);
1317     del_curterm(cur_term);
1318 }
1319
1320