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 <name>@<host.domain> 740 </pre> 741@@ -365,7 +366,7 @@ 742 743 <p>Tell us about every terminal on which you have reproduced 744 the bug — 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 <esr@snark.thyrsus.com> 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&T Bell Labs, and made an improved <code>termcap</code> 890 library called <code>terminfo</code> (i.e., 891- “libterm”). 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&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+ “libterm”), 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&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