patch 8.2.3327: no check for sysconf() failing

Problem:    No check for sysconf() failing.
Solution:   If sysconf() fails use SIGSTKSZ for the signal stack size.
            (Zdenek Dohnal, closes #8743)
diff --git a/src/os_unix.c b/src/os_unix.c
index 56ee764..b603927 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -783,16 +783,36 @@
  * completely full.
  */
 
-#if !defined SIGSTKSZ && !defined(HAVE_SYSCONF_SIGSTKSZ)
-# define SIGSTKSZ 8000    // just a guess of how much stack is needed...
-#endif
-
 # ifdef HAVE_SIGALTSTACK
 static stack_t sigstk;			// for sigaltstack()
 # else
 static struct sigstack sigstk;		// for sigstack()
 # endif
 
+/*
+ * Get a size of signal stack.
+ * Preference (if available): sysconf > SIGSTKSZ > guessed size
+ */
+static long int get_signal_stack_size()
+{
+# ifdef HAVE_SYSCONF_SIGSTKSZ
+    long int size = -1;
+
+    // return size only if sysconf doesn't return an error
+    if ((size = sysconf(_SC_SIGSTKSZ)) > -1)
+	return size;
+# endif
+
+# ifdef SIGSTKSZ
+    // if sysconf() isn't available or gives error, return SIGSTKSZ
+    // if defined
+    return SIGSTKSZ;
+# endif
+
+    // otherwise guess the size
+    return 8000;
+}
+
 static char *signal_stack;
 
     static void
@@ -806,21 +826,13 @@
 #  else
 	sigstk.ss_sp = signal_stack;
 #  endif
-#  ifdef HAVE_SYSCONF_SIGSTKSZ
-	sigstk.ss_size = sysconf(_SC_SIGSTKSZ);
-#  else
-	sigstk.ss_size = SIGSTKSZ;
-#  endif
+	sigstk.ss_size = get_signal_stack_size();
 	sigstk.ss_flags = 0;
 	(void)sigaltstack(&sigstk, NULL);
 # else
 	sigstk.ss_sp = signal_stack;
 	if (stack_grows_downwards)
-#  ifdef HAVE_SYSCONF_SIGSTKSZ
-	    sigstk.ss_sp += sysconf(_SC_SIGSTKSZ) - 1;
-#  else
-	    sigstk.ss_sp += SIGSTKSZ - 1;
-#  endif
+	    sigstk.ss_sp += get_signal_stack_size() - 1;
 	sigstk.ss_onstack = 0;
 	(void)sigstack(&sigstk, NULL);
 # endif
@@ -3278,11 +3290,7 @@
      * Ignore any errors.
      */
 #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
-# ifdef HAVE_SYSCONF_SIGSTKSZ
-    signal_stack = alloc(sysconf(_SC_SIGSTKSZ));
-# else
-    signal_stack = alloc(SIGSTKSZ);
-# endif
+    signal_stack = alloc(get_signal_stack_size());
     init_signal_stack();
 #endif
 }
diff --git a/src/version.c b/src/version.c
index 5383ba3..12a78a8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3327,
+/**/
     3326,
 /**/
     3325,