ncurses 6.1 - patch 20190728
authorThomas E. Dickey <dickey@invisible-island.net>
Mon, 29 Jul 2019 00:58:02 +0000 (00:58 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Mon, 29 Jul 2019 00:58:02 +0000 (00:58 +0000)
+ fix a few more coverity warnings.
+ more documentation updates based on tctest.

33 files changed:
NEWS
VERSION
c++/cursesapp.cc
c++/cursesapp.h
c++/cursesf.cc
c++/cursesf.h
c++/cursesm.cc
c++/cursesm.h
c++/cursesp.cc
c++/cursesp.h
c++/cursesw.cc
c++/cursesw.h
c++/cursslk.cc
c++/cursslk.h
c++/demo.cc
dist.mk
doc/hackguide.doc
doc/html/hackguide.html
doc/html/ncurses-intro.html
doc/ncurses-intro.doc
ncurses/curses.priv.h
ncurses/tinfo/MKuserdefs.sh
ncurses/tinfo/lib_setup.c
ncurses/tinfo/tinfo_driver.c
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
package/ncursest.spec
progs/tput.c
test/test_sgr.c

diff --git a/NEWS b/NEWS
index bfcd06b9c09327531f461506c5bd9492265d6e44..d2e3848e33a65055853b5e5ed9a5a28bc327f42b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3354 2019/07/27 22:45:29 tom Exp $
+-- $Id: NEWS,v 1.3356 2019/07/28 18:49:10 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,10 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20190728
+       + fix a few more coverity warnings.
+       + more documentation updates based on tctest.
+
 20190727
        + fix a few coverity warnings.
        + documentation updates based on tctest.
diff --git a/VERSION b/VERSION
index 10b7086e097b34ada2c894d5024017dc65373f5d..640fdb93bbdfa090ccb5cc7a09ec6815860d4bf0 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.1     20190727
+5:0:10 6.1     20190728
index ddab6fdf9b9dd182e4df8ddce9e0cf3d4c00b6bf..e1ffa7a47efe413179e53154b8cd88485e17f839 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2008,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -35,7 +35,7 @@
 #include "internal.h"
 #include "cursesapp.h"
 
-MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $")
+MODULE_ID("$Id: cursesapp.cc,v 1.16 2019/07/28 19:55:27 tom Exp $")
 
 void
 NCursesApplication::init(bool bColors)
@@ -68,7 +68,7 @@ NCursesApplication* NCursesApplication::theApp = 0;
 NCursesWindow* NCursesApplication::titleWindow = 0;
 NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0;
 
-NCursesApplication::~NCursesApplication()
+NCursesApplication::~NCursesApplication() THROWS(NCursesException)
 {
   Soft_Label_Key_Set* S;
 
index e3cbc04cc6745582c22cac697c1ce349b6b9a219..a3d0aaf3c3604b9167db5799478ab9d84b9dc816 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer, 1997                                          *
  ****************************************************************************/
 
-// $Id: cursesapp.h,v 1.12 2011/09/17 22:12:10 tom Exp $
+// $Id: cursesapp.h,v 1.13 2019/07/28 19:55:27 tom Exp $
 
 #ifndef NCURSES_CURSESAPP_H_incl
 #define NCURSES_CURSESAPP_H_incl
@@ -106,7 +106,7 @@ protected:
   }
 
 public:
-  virtual ~NCursesApplication();
+  virtual ~NCursesApplication() THROWS(NCursesException);
 
   // Get a pointer to the current application object
   static NCursesApplication* getApplication() {
index 7956054769f4c9e70808199ece62b311a16b2090..4a7ad838c367d113c996458ff0c4114d680c4333 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2005,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -35,9 +35,9 @@
 #include "cursesf.h"
 #include "cursesapp.h"
 
-MODULE_ID("$Id: cursesf.cc,v 1.22 2011/09/17 22:12:10 tom Exp $")
+MODULE_ID("$Id: cursesf.cc,v 1.23 2019/07/28 19:55:27 tom Exp $")
 
-NCursesFormField::~NCursesFormField ()
+NCursesFormField::~NCursesFormField () THROWS(NCursesException)
 {
   if (field)
     OnError(::free_field (field));
@@ -149,7 +149,7 @@ NCursesForm::InitForm(NCursesFormField* nfields[],
   setDefaultAttributes();
 }
 
-NCursesForm::~NCursesForm()
+NCursesForm::~NCursesForm() THROWS(NCursesException)
 {
   UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(form));
   delete hook;
index fe1f1aa90a18876fb7739e61faab4ac53a766547..746b222a2aca97b068e3e585b5d2973b00fab06a 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer, 1997                                          *
  ****************************************************************************/
 
-// $Id: cursesf.h,v 1.32 2014/08/09 22:06:11 Adam.Jiang Exp $
+// $Id: cursesf.h,v 1.33 2019/07/28 19:55:27 tom Exp $
 
 #ifndef NCURSES_CURSESF_H_incl
 #define NCURSES_CURSESF_H_incl 1
@@ -151,7 +151,7 @@ public:
   {
   }
 
-  virtual ~NCursesFormField ();
+  virtual ~NCursesFormField () THROWS(NCursesException);
 
   // Duplicate the field at a new position
   inline NCursesFormField* dup(int first_row, int first_col)
@@ -470,7 +470,7 @@ public:
   {
   }
 
-  virtual ~NCursesForm();
+  virtual ~NCursesForm() THROWS(NCursesException);
 
   // Set the default attributes for the form
   virtual void setDefaultAttributes();
@@ -645,7 +645,7 @@ public:
        OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
   }
 
-  virtual ~NCursesUserField() {};
+  virtual ~NCursesUserField() THROWS(NCursesException) {};
 
   inline const T* UserData (void) const {
     return reinterpret_cast<const T*>(::field_userptr (field));
@@ -702,7 +702,7 @@ public:
                                     (p_UserData)));
   };
 
-  virtual ~NCursesUserForm() {
+  virtual ~NCursesUserForm() THROWS(NCursesException) {
   };
 
   inline T* UserData (void) {
index 6ab0940dadaa20aae86eb97cb5c5c4f6011e818e..64a38ffcea0bb99767796e5007620310a2245ed1 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2011,2017 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -35,9 +35,9 @@
 #include "cursesm.h"
 #include "cursesapp.h"
 
-MODULE_ID("$Id: cursesm.cc,v 1.24 2017/06/26 08:32:53 tom Exp $")
+MODULE_ID("$Id: cursesm.cc,v 1.25 2019/07/28 19:55:27 tom Exp $")
 
-NCursesMenuItem::~NCursesMenuItem()
+NCursesMenuItem::~NCursesMenuItem() THROWS(NCursesException)
 {
   if (item)
     OnError(::free_item(item));
@@ -49,7 +49,7 @@ NCursesMenuItem::action()
   return FALSE;
 }
 
-NCursesMenuCallbackItem::~NCursesMenuCallbackItem()
+NCursesMenuCallbackItem::~NCursesMenuCallbackItem() THROWS(NCursesException)
 {
 }
 
@@ -175,7 +175,7 @@ NCursesMenu::setDefaultAttributes()
   }
 }
 
-NCursesMenu::~NCursesMenu()
+NCursesMenu::~NCursesMenu() THROWS(NCursesException)
 {
   UserHook* hook = reinterpret_cast<UserHook*>(::menu_userptr(menu));
   delete hook;
index f8f9665d9d247e8eacb0101758c3d23020b90d9c..239941d80d910d853585de74a07e04c6364cb2c2 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer, 1997                                          *
  ****************************************************************************/
 
-// $Id: cursesm.h,v 1.30 2014/08/09 22:06:18 Adam.Jiang Exp $
+// $Id: cursesm.h,v 1.31 2019/07/28 19:55:27 tom Exp $
 
 #ifndef NCURSES_CURSESM_H_incl
 #define NCURSES_CURSESM_H_incl 1
@@ -85,7 +85,7 @@ public:
     (void) rhs;
   }
 
-  virtual ~NCursesMenuItem ();
+  virtual ~NCursesMenuItem () THROWS(NCursesException);
   // Release the items memory
 
   inline const char* name () const {
@@ -179,7 +179,7 @@ public:
   {
   }
 
-  virtual ~NCursesMenuCallbackItem();
+  virtual ~NCursesMenuCallbackItem() THROWS(NCursesException);
 
   bool action();
 };
@@ -332,7 +332,7 @@ public:
   {
   }
 
-  virtual ~NCursesMenu ();
+  virtual ~NCursesMenu () THROWS(NCursesException);
 
   // Retrieve the menus subwindow
   inline NCursesWindow& subWindow() const {
@@ -606,7 +606,7 @@ public:
        OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData))));
   }
 
-  virtual ~NCursesUserItem() {}
+  virtual ~NCursesUserItem() THROWS(NCursesException) {}
 
   inline const T* UserData (void) const {
     return reinterpret_cast<const T*>(::item_userptr (item));
@@ -657,7 +657,7 @@ public:
        set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
   };
 
-  virtual ~NCursesUserMenu() {
+  virtual ~NCursesUserMenu() THROWS(NCursesException) {
   };
 
   inline T* UserData (void) {
index 9c4eab6954ec5c156df3560dac42c5022a163f22..83b7cc906f91cccd20a98630b5c90046effff006 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -34,7 +34,7 @@
 #include "internal.h"
 #include "cursesp.h"
 
-MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $")
+MODULE_ID("$Id: cursesp.cc,v 1.26 2019/07/28 19:55:27 tom Exp $")
 
 NCursesPanel* NCursesPanel::dummy = static_cast<NCursesPanel*>(0);
 
@@ -51,7 +51,7 @@ void NCursesPanel::init()
   ::set_panel_userptr(p, reinterpret_cast<void *>(hook));
 }
 
-NCursesPanel::~NCursesPanel()
+NCursesPanel::~NCursesPanel() THROWS(NCursesException)
 {
   UserHook* hook = UserPointer();
   assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
index 54b0d58899ecda6f380b553ec977add8c3f03087..82b373bf793ce430fdfba0dbdfe1e2c45432f5b7 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2014,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -34,7 +34,7 @@
 #ifndef NCURSES_CURSESP_H_incl
 #define NCURSES_CURSESP_H_incl 1
 
-// $Id: cursesp.h,v 1.31 2014/08/09 22:06:26 Adam.Jiang Exp $
+// $Id: cursesp.h,v 1.32 2019/07/28 19:55:27 tom Exp $
 
 #include <cursesw.h>
 
@@ -131,7 +131,7 @@ public:
   {
   }
 
-  virtual ~NCursesPanel();
+  virtual ~NCursesPanel() THROWS(NCursesException);
 
   // basic manipulation
   inline void hide()
@@ -250,7 +250,7 @@ public:
   // This creates an user panel associated with the ::stdscr and user data
   // pointed to by p_UserData.
 
-  virtual ~NCursesUserPanel() {};
+  virtual ~NCursesUserPanel() THROWS(NCursesException) {};
 
   T* UserData (void)
   {
index 16438770d47aaf178a92b0d52ddbb956efb7d407..42e5bda98b5485aff0d285a9518f9805eeb04052 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 2007-2012,2014 Free Software Foundation, Inc.              *
+ * Copyright (c) 2007-2014,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -42,7 +42,7 @@
 #include "internal.h"
 #include "cursesw.h"
 
-MODULE_ID("$Id: cursesw.cc,v 1.54 2014/02/01 22:10:42 tom Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.55 2019/07/28 19:55:27 tom Exp $")
 
 #define COLORS_NEED_INITIALIZATION  -1
 #define COLORS_NOT_INITIALIZED       0
@@ -344,7 +344,7 @@ NCursesWindow::kill_subwindows()
 }
 
 
-NCursesWindow::~NCursesWindow()
+NCursesWindow::~NCursesWindow() THROWS(NCursesException)
 {
     kill_subwindows();
 
index 40b28f575a145b5478cdf79393ece07eaadc8e2d..03528cc57e71825bac74ddb61ea5b5ff26c448de 100644 (file)
@@ -1,7 +1,7 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 // vile:cppmode
 /****************************************************************************
- * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
 #ifndef NCURSES_CURSESW_H_incl
 #define NCURSES_CURSESW_H_incl 1
 
-// $Id: cursesw.h,v 1.53 2017/11/21 00:37:23 tom Exp $
+// $Id: cursesw.h,v 1.54 2019/07/28 19:55:27 tom Exp $
 
 extern "C" {
 #  include   <curses.h>
@@ -837,7 +837,7 @@ public:
   {
   }
 
-  virtual ~NCursesWindow();
+  virtual ~NCursesWindow() THROWS(NCursesException);
 
   NCursesWindow Clone();
   // Make an exact copy of the window.
@@ -1485,7 +1485,7 @@ public:
   {
   }
 
-  virtual ~NCursesPad() {}
+  virtual ~NCursesPad() THROWS(NCursesException) {}
 
   int echochar(const chtype ch) { return ::pechochar(w, ch); }
   // Put the attributed character onto the pad and immediately do a
@@ -1546,7 +1546,7 @@ public:
   }
   // Construct the FramedPad with the given Window win as viewport.
 
-  virtual ~NCursesFramedPad() {
+  virtual ~NCursesFramedPad() THROWS(NCursesException) {
     delete getSubWindow();
   }
 
index 23785dfca8286038461f005b22f42d085484ef43..ef393632de4e7eb6e3885a8f3146d578e40a46a3 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2005,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -35,7 +35,7 @@
 #include "cursslk.h"
 #include "cursesapp.h"
 
-MODULE_ID("$Id: cursslk.cc,v 1.16 2012/02/23 10:41:56 tom Exp $")
+MODULE_ID("$Id: cursslk.cc,v 1.17 2019/07/28 19:55:27 tom Exp $")
 
 Soft_Label_Key_Set::Soft_Label_Key&
   Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
@@ -88,7 +88,7 @@ Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt)
   init();
 }
 
-Soft_Label_Key_Set::~Soft_Label_Key_Set() {
+Soft_Label_Key_Set::~Soft_Label_Key_Set() THROWS(NCursesException) {
   if (!::isendwin())
     clear();
   delete[] slk_array;
index 091695eef27a9489e37afc3798b9b1ec9b82a403..c110a61cab4e7efc080a5dfcecc6fcbe628ed828 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2005,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -31,7 +31,7 @@
  *   Author: Juergen Pfeifer, 1997                                          *
  ****************************************************************************/
 
-// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $
+// $Id: cursslk.h,v 1.14 2019/07/28 19:55:27 tom Exp $
 
 #ifndef NCURSES_CURSSLK_H_incl
 #define NCURSES_CURSSLK_H_incl
@@ -161,7 +161,7 @@ public:
     init();            // allocate a new slk_array[]
   }
 
-  virtual ~Soft_Label_Key_Set();
+  virtual ~Soft_Label_Key_Set() THROWS(NCursesException);
 
   // Get Label# i. Label counting starts with 1!
   NCURSES_IMPEXP Soft_Label_Key& operator[](int i);
index 2423111d3d81e69e2ffe124eb88e1c21987d6fd8..37e50c761fb7c111cf7624492392e6d1203fc4b6 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -35,7 +35,7 @@
  *   Demo code for NCursesMenu and NCursesForm written by
  *   Juergen Pfeifer
  *
- * $Id: demo.cc,v 1.43 2018/06/24 00:07:22 tom Exp $
+ * $Id: demo.cc,v 1.44 2019/07/28 19:55:27 tom Exp $
  */
 
 #include "internal.h"
@@ -176,7 +176,7 @@ public:
     : NCursesUserItem<T>(p_name, static_cast<const char*>(0), p_UserData)
   {}
 
-  virtual ~MyAction() {}
+  virtual ~MyAction() THROWS(NCursesException) {}
 
   bool action() {
     SillyDemo a;
@@ -295,7 +295,7 @@ public:
   {
   }
 
-  ~TestForm() {
+  ~TestForm() THROWS(NCursesException) {
     delete mft;
     delete ift;
     delete eft;
@@ -473,7 +473,7 @@ public:
   {
   }
 
-  ~MyMenu()
+  ~MyMenu() THROWS(NCursesException)
   {
     P->hide();
     delete P;
diff --git a/dist.mk b/dist.mk
index b1e4f6d8269567074653ead4c5228049d1c85bf3..8b4eb2d802aafdfe8376fbd3b06201e7f766fdd5 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1297 2019/07/26 23:10:14 tom Exp $
+# $Id: dist.mk,v 1.1298 2019/07/28 10:39:10 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,7 +37,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
 NCURSES_MINOR = 1
-NCURSES_PATCH = 20190727
+NCURSES_PATCH = 20190728
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index 2324322a4e67a6a539f688dd27c6b13fe2dfecff..1bafad2ad10bd0d012173f38d81252df61481d66 100644 (file)
@@ -205,7 +205,7 @@ How to Design Extensions
        If  your bug produces a core-dump, please include a symbolic stack
        trace generated by gdb(1) or your local equivalent.
        Tell  us about every terminal on which you have reproduced the bug
-       --  and  every  terminal  on  which  you  cannot. Ideally, sent us
+       --  and  every  terminal  on  which  you  cannot. Ideally, send us
        terminfo sources for all of these (yours might differ from ours).
        Include  your ncurses version and your OS/machine type, of course!
        You can find your ncurses version in the curses.h file.
@@ -352,10 +352,10 @@ The Engine Room
 
    Here are some more details about mouse event handling:
 
-   The lib_mouse()code is logically split into a lower level that accepts
-   event  reports  in  a  device-dependent format and an upper level that
-   parses mouse gestures and filters events. The mediating data structure
-   is a circular queue of event structures.
+   The  lib_mouse()  code  is  logically  split  into  a lower level that
+   accepts  event reports in a device-dependent format and an upper level
+   that  parses  mouse  gestures  and  filters events. The mediating data
+   structure is a circular queue of event structures.
 
    Functionally, the lower level's job is to pick up primitive events and
    put  them  on  the circular queue. This can happen in one of two ways:
@@ -382,24 +382,23 @@ The Engine Room
    The  brains  of this operation are the modules hashmap.c, hardscroll.c
    and  lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
    happens looks like this:
-
-   The  hashmap.c  module tries to detect vertical motion changes between
-   the  real  and virtual screens. This information is represented by the
-   oldindex  members  in  the  newscr  structure.  These  are modified by
-   vertical-motion  and  clear  operations,  and  both are re-initialized
-   after each update. To this change-journalling information, the hashmap
-   code  adds  deductions  made using a modified Heckel algorithm on hash
-   values generated from the line contents.
-
-   The  hardscroll.c module computes an optimum set of scroll, insertion,
-   and   deletion   operations  to  make  the  indices  match.  It  calls
-   _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
-
-   Then  lib_doupdate.c  goes  to  work.  Its  job  is to do line-by-line
-   transformations  of curscr lines to newscr lines. Its main tool is the
-   routine  mvcur()  in  lib_mvcur.c.  This  routine does cursor-movement
-   optimization,  attempting to get from given screen location A to given
-   location B in the fewest output characters possible.
+     * The  hashmap.c  module  tries  to  detect  vertical motion changes
+       between   the  real  and  virtual  screens.  This  information  is
+       represented by the oldindex members in the newscr structure. These
+       are modified by vertical-motion and clear operations, and both are
+       re-initialized  after  each  update.  To  this  change-journalling
+       information,  the  hashmap  code  adds  deductions  made  using  a
+       modified  Heckel  algorithm on hash values generated from the line
+       contents.
+     * The  hardscroll.c  module  computes  an  optimum  set  of  scroll,
+       insertion,  and  deletion operations to make the indices match. It
+       calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
+     * Then  lib_doupdate.c  goes  to work. Its job is to do line-by-line
+       transformations  of curscr lines to newscr lines. Its main tool is
+       the   routine   mvcur()   in   lib_mvcur.c.   This   routine  does
+       cursor-movement  optimization, attempting to get from given screen
+       location  A  to  given  location B in the fewest output characters
+       possible.
 
    If  you  want to work on screen optimizations, you should use the fact
    that  (in  the  trace-enabled  version  of  the  library) enabling the
index 2ae0884f3d471cdd57803233958b4fcd56cfc15f..3bf9d09435bdd34007a9a8687703b526d1619ad5 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  $Id: hackguide.html,v 1.31 2019/03/16 19:39:05 tom Exp $
+  $Id: hackguide.html,v 1.32 2019/07/28 18:08:54 tom Exp $
   ****************************************************************************
   * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
   *                                                                          *
@@ -33,7 +33,7 @@
 <html>
 <head>
   <meta name="generator" content=
-  "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
+  "HTML Tidy for HTML5 for Linux version 5.2.0">
 
   <title>A Hacker's Guide to Ncurses Internals</title>
   <link rel="author" href="mailto:bugs-ncurses@gnu.org">
@@ -63,8 +63,7 @@ this one.
       </ul>
     </li>
 
-    <li><a href="#portability">Portability and
-    Configuration</a></li>
+    <li><a href="#portability">Portability and Configuration</a></li>
 
     <li><a href="#documentation">Documentation Conventions</a></li>
 
@@ -233,7 +232,8 @@ this one.
     These have to be viewable through traditional <em>man(1)</em>
     programs.</li>
 
-    <li><strong>Write everything else in HTML.</strong></li>
+    <li><strong>Write everything else in HTML.</strong>
+    </li>
   </ol>
 
   <p>When in doubt, HTMLize a master and use <em>lynx(1)</em> to
@@ -256,6 +256,7 @@ this one.
   majordomo list; to join, write to
   <code>bug-ncurses-request@gnu.org</code> with a message
   containing the line:</p>
+
   <pre>
              subscribe &lt;name&gt;@&lt;host.domain&gt;
 </pre>
@@ -365,7 +366,7 @@ this one.
 
       <p>Tell us about every terminal on which you have reproduced
       the bug &mdash; and every terminal on which you cannot.
-      Ideally, sent us terminfo sources for all of these (yours
+      Ideally, send us terminfo sources for all of these (yours
       might differ from ours).</p>
 
       <p>Include your ncurses version and your OS/machine type, of
@@ -547,7 +548,7 @@ this one.
 
   <p>Here are some more details about mouse event handling:</p>
 
-  <p>The <code>lib_mouse()</code>code is logically split into a
+  <p>The <code>lib_mouse()</code> code is logically split into a
   lower level that accepts event reports in a device-dependent
   format and an upper level that parses mouse gestures and filters
   events. The mediating data structure is a circular queue of event
@@ -566,8 +567,7 @@ this one.
   reports (low-level events) into a gesture (a high-level or
   composite event).</p>
 
-  <h3><a name="output" id="output">Output and Screen
-  Updating</a></h3>
+  <h3><a name="output" id="output">Output and Screen Updating</a></h3>
 
   <p>With the single exception of character echoes during a
   <code>wgetnstr()</code> call (which simulates cooked-mode line
@@ -585,27 +585,35 @@ this one.
   <code>lib_mvcur.c</code>. Essentially, what happens looks like
   this:</p>
 
-  <p>The <code>hashmap.c</code> module tries to detect vertical
-  motion changes between the real and virtual screens. This
-  information is represented by the oldindex members in the newscr
-  structure. These are modified by vertical-motion and clear
-  operations, and both are re-initialized after each update. To
-  this change-journalling information, the hashmap code adds
-  deductions made using a modified Heckel algorithm on hash values
-  generated from the line contents.</p>
-
-  <p>The <code>hardscroll.c</code> module computes an optimum set
-  of scroll, insertion, and deletion operations to make the indices
-  match. It calls <code>_nc_mvcur_scrolln()</code> in
-  <code>lib_mvcur.c</code> to do those motions.</p>
-
-  <p>Then <code>lib_doupdate.c</code> goes to work. Its job is to
-  do line-by-line transformations of <code>curscr</code> lines to
-  <code>newscr</code> lines. Its main tool is the routine
-  <code>mvcur()</code> in <code>lib_mvcur.c</code>. This routine
-  does cursor-movement optimization, attempting to get from given
-  screen location A to given location B in the fewest output
-  characters possible.</p>
+  <ul>
+    <li>
+      <p>The <code>hashmap.c</code> module tries to detect vertical
+      motion changes between the real and virtual screens. This
+      information is represented by the oldindex members in the
+      newscr structure. These are modified by vertical-motion and
+      clear operations, and both are re-initialized after each
+      update. To this change-journalling information, the hashmap
+      code adds deductions made using a modified Heckel algorithm
+      on hash values generated from the line contents.</p>
+    </li>
+
+    <li>
+      <p>The <code>hardscroll.c</code> module computes an optimum
+      set of scroll, insertion, and deletion operations to make the
+      indices match. It calls <code>_nc_mvcur_scrolln()</code> in
+      <code>lib_mvcur.c</code> to do those motions.</p>
+    </li>
+
+    <li>
+      <p>Then <code>lib_doupdate.c</code> goes to work. Its job is
+      to do line-by-line transformations of <code>curscr</code>
+      lines to <code>newscr</code> lines. Its main tool is the
+      routine <code>mvcur()</code> in <code>lib_mvcur.c</code>.
+      This routine does cursor-movement optimization, attempting to
+      get from given screen location A to given location B in the
+      fewest output characters possible.</p>
+    </li>
+  </ul>
 
   <p>If you want to work on screen optimizations, you should use
   the fact that (in the trace-enabled version of the library)
@@ -621,8 +629,7 @@ this one.
   <code>include/curses.h.in</code> for mask values, near the
   end.</p>
 
-  <h1><a name="fmnote" id="fmnote">The Forms and Menu
-  Libraries</a></h1>
+  <h1><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h1>
 
   <p>The forms and menu libraries should work reliably in any
   environment you can port ncurses to. The only portability issue
@@ -639,8 +646,7 @@ this one.
   This version has been slightly cleaned up for
   <code>ncurses</code>.</p>
 
-  <h1><a name="tic" id="tic">A Tour of the Terminfo
-  Compiler</a></h1>
+  <h1><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h1>
 
   <p>The <strong>ncurses</strong> implementation of
   <strong>tic</strong> is rather complex internally; it has to do a
@@ -950,11 +956,13 @@ this one.
 
     <dd>gettimeofday(), select().</dd>
   </dl>
+
   <hr>
 
   <address>
     Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
-  </address>(Note: This is <em>not</em> the <a href="#bugtrack">bug
+  </address>
+  (Note: This is <em>not</em> the <a href="#bugtrack">bug
   address</a>!)
 </body>
 </html>
index a994541e48ca9ce05393605c88fea75439c9d4b7..cc1a041eeeafb7c6629bd01f3a727e207500304f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-  $Id: ncurses-intro.html,v 1.51 2019/07/27 11:47:10 tom Exp $
+  $Id: ncurses-intro.html,v 1.53 2019/07/28 16:53:26 tom Exp $
   ****************************************************************************
   * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc.              *
   *                                                                          *
 
   <p>Historically, the first ancestor of <code>curses</code> was
   the routines written to provide screen-handling for the
-  <code>vi</code> editor; these used the already-existing
-  <code>termcap</code> database facility for describing terminal
+  <code>vi</code> editor; these used the <code>termcap</code>
+  database facility (both released in 3BSD) for describing terminal
   capabilities. These routines were abstracted into a documented
   library and first released with the early BSD UNIX versions. All
-  of this work was done by students at the University of
-  California.</p>
+  of this work was done by students at the University of California
+  (Berkeley campus). The curses library was first published in
+  4.0BSD, a year after 3BSD (i.e., late 1980).</p>
 
   <p>After graduation, one of those students went to work at
   AT&amp;T Bell Labs, and made an improved <code>termcap</code>
   library called <code>terminfo</code> (i.e.,
-  &ldquo;libterm&rdquo;). That was subsequently released in System
-  V Release 2. Thereafter, other developers added to the terminfo
-  library. For instance, a student at Cornell University wrote an
-  improved terminfo library as well as a tool (<code>tic</code>) to
-  compile the terminal descriptions. As a general rule, AT&amp;T
-  did not identify the developers in the source-code or
-  documentation; the <code>tic</code> and <code>infocmp</code>
-  programs are the exceptions.</p>
+  &ldquo;libterm&rdquo;), and adapted the curses library to use
+  this. That was subsequently released in System V Release 2 (early
+  1984). Thereafter, other developers added to the curses and
+  terminfo libraries. For instance, a student at Cornell University
+  wrote an improved terminfo library as well as a tool
+  (<code>tic</code>) to compile the terminal descriptions. As a
+  general rule, AT&amp;T did not identify the developers in the
+  source-code or documentation; the <code>tic</code> and
+  <code>infocmp</code> programs are the exceptions.</p>
 
   <p>System V Release 3 (System III UNIX) from Bell Labs featured a
-  rewritten and much-improved <code>curses</code> library,l along
-  with the <code>tic</code> program.</p>
+  rewritten and much-improved <code>curses</code> library, along
+  with the <code>tic</code> program (late 1986).</p>
 
   <p>To recap, terminfo is based on Berkeley's termcap database,
   but contains a number of improvements and extensions.
index de26fc5c94c02d8d19af8b64b6df0a0e8014d5a1..4e752ed0fc54816f5e0084db1b3fe46405aafd9b 100644 (file)
 A Brief History of Curses
 
    Historically, the first ancestor of curses was the routines written to
-   provide   screen-handling   for   the   vi   editor;  these  used  the
-   already-existing  termcap  database  facility  for describing terminal
+   provide  screen-handling  for  the  vi  editor; these used the termcap
+   database  facility  (both  released  in  3BSD) for describing terminal
    capabilities. These routines were abstracted into a documented library
    and  first released with the early BSD UNIX versions. All of this work
-   was done by students at the University of California.
+   was  done  by  students  at  the  University  of  California (Berkeley
+   campus).  The  curses  library  was  first published in 4.0BSD, a year
+   after 3BSD (i.e., late 1980).
 
    After  graduation,  one  of  those  students went to work at AT&T Bell
    Labs,  and  made  an  improved  termcap library called terminfo (i.e.,
-   "libterm").  That  was  subsequently  released  in System V Release 2.
-   Thereafter,  other  developers  added  to  the  terminfo  library. For
+   "libterm"),  and  adapted  the  curses  library  to use this. That was
+   subsequently  released in System V Release 2 (early 1984). Thereafter,
+   other  developers  added  to  the  curses  and terminfo libraries. For
    instance,  a  student at Cornell University wrote an improved terminfo
    library  as well as a tool (tic) to compile the terminal descriptions.
    As  a  general  rule,  AT&T  did  not  identify  the developers in the
@@ -149,8 +152,8 @@ A Brief History of Curses
    exceptions.
 
    System  V  Release  3  (System  III  UNIX)  from  Bell Labs featured a
-   rewritten  and  much-improved  curses  library,l  along  with  the tic
-   program.
+   rewritten and much-improved curses library, along with the tic program
+   (late 1986).
 
    To  recap,  terminfo  is  based  on  Berkeley's  termcap database, but
    contains  a  number  of  improvements  and  extensions.  Parameterized
index 1d51a85f72dcbfa27c54b25549848488d9ec8d19..f619c5c967e5bcb4fed445108e1165febd737066 100644 (file)
@@ -34,7 +34,7 @@
  ****************************************************************************/
 
 /*
- * $Id: curses.priv.h,v 1.624 2019/06/23 15:20:49 tom Exp $
+ * $Id: curses.priv.h,v 1.625 2019/07/28 18:32:05 tom Exp $
  *
  *     curses.priv.h
  *
@@ -2178,18 +2178,20 @@ extern NCURSES_EXPORT(int)    _nc_ripoffline(int, int(*)(WINDOW*, int));
 
 #define SETUP_FAIL ERR
 
-#define ret_error(code, fmt, arg)      if (errret) {\
-                                           *errret = code;\
+#define ret_error(rc, fmt, p, q)       if (errret) {\
+                                           *errret = rc;\
+                                           q;\
                                            returnCode(SETUP_FAIL);\
                                        } else {\
-                                           fprintf(stderr, fmt, arg);\
+                                           fprintf(stderr, fmt, p);\
+                                           q;\
                                            ExitTerminfo(EXIT_FAILURE);\
                                        }
 
-#define ret_error1(code, fmt, arg)     ret_error(code, "'%s': " fmt, arg)
+#define ret_error1(rc, fmt, p, q)      ret_error(rc, "'%s': " fmt, p, q)
 
-#define ret_error0(code, msg)          if (errret) {\
-                                           *errret = code;\
+#define ret_error0(rc, msg)            if (errret) {\
+                                           *errret = rc;\
                                            returnCode(SETUP_FAIL);\
                                        } else {\
                                            fprintf(stderr, msg);\
index eeb6d8cf24fb92e44e93e8d13672a028064f2bc1..7bd7369ffef8cb64352b8f60615a2cdf1aaae3f4 100644 (file)
@@ -26,7 +26,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: MKuserdefs.sh,v 1.8 2019/03/17 00:46:17 tom Exp $
+# $Id: MKuserdefs.sh,v 1.9 2019/07/28 19:12:18 tom Exp $
 AWK=${1-awk}; shift 1
 OPT1=${1-0}; shift 1
 
@@ -55,6 +55,8 @@ cat "$@" | ./make_hash 1 user $OPT1
 
 cat <<EOF
 
+#define USERTABSIZE SIZEOF(user_names_data)
+
 #if $OPT1
 static void
 next_string(const char *strings, unsigned *offset)
@@ -68,11 +70,11 @@ _nc_build_names(struct user_table_entry **actual,
                const char *strings)
 {
     if (*actual == 0) {
-       *actual = typeCalloc(struct user_table_entry, CAPTABSIZE);
+       *actual = typeCalloc(struct user_table_entry, USERTABSIZE);
        if (*actual != 0) {
            unsigned n;
            unsigned len = 0;
-           for (n = 0; n < CAPTABSIZE; ++n) {
+           for (n = 0; n < USERTABSIZE; ++n) {
                (*actual)[n].ute_name = strings + len;
                (*actual)[n].ute_type = (int) source[n].ute_type;
                (*actual)[n].ute_argc = source[n].ute_argc;
index f4b1bb9e81ca5b6f3e19e61caa361f121750362c..04acfb496e972cc65d65e5b1bbf54012cd3e35f4 100644 (file)
@@ -48,7 +48,7 @@
 #include <locale.h>
 #endif
 
-MODULE_ID("$Id: lib_setup.c,v 1.200 2019/06/22 00:15:32 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.202 2019/07/28 19:33:40 tom Exp $")
 
 /****************************************************************************
  *
@@ -662,7 +662,8 @@ TINFO_SETUP_TERM(TERMINAL **tp,
     if (strlen(myname) > MAX_NAME_SIZE) {
        ret_error(TGETENT_ERR,
                  "TERM environment must be <= %d characters.\n",
-                 MAX_NAME_SIZE);
+                 MAX_NAME_SIZE,
+                 free(myname));
     }
 
     T(("your terminal name is %s", myname));
@@ -713,8 +714,9 @@ TINFO_SETUP_TERM(TERMINAL **tp,
        termp = typeCalloc(TERMINAL, 1);
 #endif
        if (termp == 0) {
-           ret_error0(TGETENT_ERR,
-                      "Not enough memory to create terminal structure.\n");
+           ret_error1(TGETENT_ERR,
+                      "Not enough memory to create terminal structure.\n",
+                      myname, free(myname));
        }
 #if HAVE_SYSCONF
        {
@@ -742,8 +744,9 @@ TINFO_SETUP_TERM(TERMINAL **tp,
            termp->Filedes = (short) Filedes;
            termp->_termname = strdup(myname);
        } else {
-           ret_error0(errret ? *errret : TGETENT_ERR,
-                      "Could not find any driver to handle this terminal.\n");
+           ret_error1(errret ? *errret : TGETENT_ERR,
+                      "Could not find any driver to handle terminal.\n",
+                      myname, free(myname));
        }
 #else
 #if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
@@ -768,9 +771,11 @@ TINFO_SETUP_TERM(TERMINAL **tp,
        if (status != TGETENT_YES) {
            del_curterm(termp);
            if (status == TGETENT_ERR) {
+               free(myname);
                ret_error0(status, "terminals database is inaccessible\n");
            } else if (status == TGETENT_NO) {
-               ret_error1(status, "unknown terminal type.\n", myname);
+               ret_error1(status, "unknown terminal type.\n",
+                          myname, free(myname));
            }
        }
 #if NCURSES_EXT_NUMBERS
@@ -828,13 +833,16 @@ TINFO_SETUP_TERM(TERMINAL **tp,
        if ((VALID_STRING(cursor_address)
             || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
            && VALID_STRING(clear_screen)) {
-           ret_error1(TGETENT_YES, "terminal is not really generic.\n", myname);
+           ret_error1(TGETENT_YES, "terminal is not really generic.\n",
+                      myname, free(myname));
        } else {
            del_curterm(termp);
-           ret_error1(TGETENT_NO, "I need something more specific.\n", myname);
+           ret_error1(TGETENT_NO, "I need something more specific.\n",
+                      myname, free(myname));
        }
     } else if (hard_copy) {
-       ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", myname);
+       ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
+                  myname, free(myname));
     }
 #endif
     free(myname);
index c779c82044aa6472d8f5df772751ae792cdad529..9b6dbb72174aa86c4370165faa3a492d8c7fc790 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008-2017,2018 Free Software Foundation, Inc.              *
+ * Copyright (c) 2008-2018,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -51,7 +51,7 @@
 # endif
 #endif
 
-MODULE_ID("$Id: tinfo_driver.c,v 1.63 2018/11/24 22:17:03 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.64 2019/07/28 18:43:09 tom Exp $")
 
 /*
  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
@@ -144,6 +144,8 @@ get_baudrate(TERMINAL *termp)
 #undef SETUP_FAIL
 #define SETUP_FAIL FALSE
 
+#define NO_COPY {}
+
 static bool
 drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
 {
@@ -184,7 +186,8 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
        if (status == TGETENT_ERR) {
            ret_error0(status, "terminals database is inaccessible\n");
        } else if (status == TGETENT_NO) {
-           ret_error1(status, "unknown terminal type.\n", tname);
+           ret_error1(status, "unknown terminal type.\n",
+                      tname, NO_COPY);
        }
     }
     result = TRUE;
@@ -225,15 +228,18 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
             || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
            && VALID_STRING(clear_screen)) {
            cleanup_termtype();
-           ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+           ret_error1(TGETENT_YES, "terminal is not really generic.\n",
+                      tname, NO_COPY);
        } else {
            cleanup_termtype();
-           ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+           ret_error1(TGETENT_NO, "I need something more specific.\n",
+                      tname, NO_COPY);
        }
     }
     if (hard_copy) {
        cleanup_termtype();
-       ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
+       ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
+                  tname, NO_COPY);
     }
 
     returnBool(result);
index c3573b509a520c49b24fbf85f56d0c054cc155c2..a6a6a95eada1945c2c130131bc59a1c4bfa79613 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.1+20190727) unstable; urgency=low
+ncurses6 (6.1+20190728) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index c3573b509a520c49b24fbf85f56d0c054cc155c2..a6a6a95eada1945c2c130131bc59a1c4bfa79613 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.1+20190727) unstable; urgency=low
+ncurses6 (6.1+20190728) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 078dc9aed65fcc7419b1b814d13a48d3c16272a3..9c52b8f610295880f6e86bbf830ab4da0c6dae82 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.1+20190727) unstable; urgency=low
+ncurses6 (6.1+20190728) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 26 Jul 2019 19:10:14 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 28 Jul 2019 06:39:10 -0400
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index 483b9002c89506f651491552a1471a348be1d10f..ea1b22f6cf9be1803cffc5e43cc4d0d1cf7a387e 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.343 2019/07/26 23:10:14 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.344 2019/07/28 10:39:10 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "1"\r
 !define VERSION_YYYY  "2019"\r
-!define VERSION_MMDD  "0727"\r
+!define VERSION_MMDD  "0728"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index 744362b23a49304548a05314785d845bf78da1be..0127d339267154e33228377a5fc511b336ae0631 100644 (file)
@@ -3,7 +3,7 @@
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.1
-Release: 20190727
+Release: 20190728
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index cc65680e44b8753d0e09a0ff8c2153cfea54072c..d8d1dcf222602adabd1458cdc49a289f13da2fb0 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.1
-Release: 20190727
+Release: 20190728
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index cf358161c5e2b57f66d089abc2a14bac2ed9c67f..f87dc057f1a8a550ebb6452bb22d40261a1e22ab 100644 (file)
@@ -1,7 +1,7 @@
 Summary: Curses library with POSIX thread support.
 Name: ncursest6
 Version: 6.1
-Release: 20190727
+Release: 20190728
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 88e757994fa123a0e4d241b05509e1bca0f13947..da90dcf07be2b5a564b5e5468583f053d96cedfd 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -50,7 +50,7 @@
 #include <transform.h>
 #include <tty_settings.h>
 
-MODULE_ID("$Id: tput.c,v 1.79 2018/06/30 15:56:01 Nicholas.Marriott Exp $")
+MODULE_ID("$Id: tput.c,v 1.80 2019/07/28 18:18:41 tom Exp $")
 
 #define PUTS(s)                fputs(s, stdout)
 
@@ -230,7 +230,7 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
             * representations
             */
 
-           for (k = 1; k < argc; k++) {
+           for (k = 1; (k < argc) && (k < NUM_PARM); k++) {
                char *tmp = 0;
                strings[k] = argv[k];
                numbers[k] = strtol(argv[k], &tmp, 0);
index 2fcde6c632a840cd1b067f3123e86a07cb28de02..4ed5954359c65fe7bfbb282f991c7784999aa464 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: test_sgr.c,v 1.12 2019/06/22 00:20:06 tom Exp $
+ * $Id: test_sgr.c,v 1.13 2019/07/28 18:13:39 tom Exp $
  *
  * A simple demo of the sgr/sgr0 terminal capabilities.
  */
@@ -299,6 +299,7 @@ brute_force(const char *name)
            free(values[count]);
        }
     }
+    free(my_name);
     del_curterm(cur_term);
 }