Fri Dec 11 19:23:22 2015 UTC ()
initscr is supposed to return NULL on error. Some versions of ncurses at
least like to play nanny and error out internally, but catch those
errors explicitly. Stops segfault when using NetBSD curses with invalid
TERM settings.


(joerg)
diff -r1.82 -r1.83 pkgsrc/devel/cmake/distinfo
diff -r0 -r1.1 pkgsrc/devel/cmake/patches/patch-Source_CursesDialog_ccmake.cxx

cvs diff -r1.82 -r1.83 pkgsrc/devel/cmake/distinfo (expand / switch to context diff)
--- pkgsrc/devel/cmake/distinfo 2015/12/07 09:30:32 1.82
+++ pkgsrc/devel/cmake/distinfo 2015/12/11 19:23:22 1.83
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.82 2015/12/07 09:30:32 adam Exp $
+$NetBSD: distinfo,v 1.83 2015/12/11 19:23:22 joerg Exp $
 
 SHA1 (cmake-3.4.1.tar.gz) = 345258f3fdb8609e5c021c1d70490010ae3cb9bc
 RMD160 (cmake-3.4.1.tar.gz) = b50b982f0f60a0f52c70527691a42cd5718b2ceb
@@ -7,6 +7,7 @@
 SHA1 (patch-CMakeLists.txt) = ae722c41e0d9a1396fe80f1000266a33e406e2f6
 SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c
 SHA1 (patch-Modules_Platform_SCO__SV.cmake) = 3ed230b3a06ea693812db8f57bc73aebec12b99f
+SHA1 (patch-Source_CursesDialog_ccmake.cxx) = c77cf55df2b047908178e7ed1db6e5454834ea49
 SHA1 (patch-Source_cmELF.cxx) = 5eb9dc0b3567b5685596ddf0a03ca8e5c76e6f92
 SHA1 (patch-Source_kwsys_SystemInformation.cxx) = 5e8c8ff7875c329e48c54ee03570ea4a6d52953a
 SHA1 (patch-Source_kwsys_SystemTools.cxx) = 634348b9bc8ccf8c72f23837baa6ba0bcacf5961

File Added: pkgsrc/devel/cmake/patches/Attic/patch-Source_CursesDialog_ccmake.cxx
$NetBSD: patch-Source_CursesDialog_ccmake.cxx,v 1.1 2015/12/11 19:23:22 joerg Exp $

--- Source/CursesDialog/ccmake.cxx.orig	2015-12-02 15:43:21.000000000 +0000
+++ Source/CursesDialog/ccmake.cxx
@@ -68,7 +68,11 @@ void onsig(int)
   if (cmCursesForm::CurrentForm)
     {
     endwin();
-    initscr(); /* Initialization */
+    if (initscr() == NULL) {
+      static const char errmsg[] = "terminal setup failed\n";
+      write(STDERR_FILENO, errmsg, sizeof(errmsg) - 1);
+      exit (1);
+    }
     noecho(); /* Echo off */
     cbreak(); /* nl- or cr not needed */
     keypad(stdscr,TRUE); /* Use key symbols as
@@ -154,7 +158,10 @@ int main(int argc, char const* const* ar
     cmCursesForm::DebugStart();
     }
 
-  initscr(); /* Initialization */
+  if (initscr() == NULL) {
+    fprintf(stderr, "terminal setup failed\n");
+    exit (1);
+  }
   noecho(); /* Echo off */
   cbreak(); /* nl- or cr not needed */
   keypad(stdscr,TRUE); /* Use key symbols as