summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/env.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/env.c b/src/env.c
index 5adc7d9eb..c8161356c 100644
--- a/src/env.c
+++ b/src/env.c
@@ -59,7 +59,7 @@ enum SIGNAL_MODE {
IGNORE, /* Set to ignore (SIG_IGN). */
IGNORE_NOERR /* ditto, but ignore sigaction(2) errors. */
};
-static enum SIGNAL_MODE signals[SIGNUM_BOUND + 1];
+static enum SIGNAL_MODE *signals;
/* Set of signals to block. */
static sigset_t block_signals;
@@ -783,6 +783,17 @@ list_signal_handling (void)
}
}
+static void
+initialize_signals (void)
+{
+ signals = xmalloc ((sizeof *signals) * (SIGNUM_BOUND + 1));
+
+ for (int i = 0 ; i <= SIGNUM_BOUND; i++)
+ signals[i] = UNCHANGED;
+
+ return;
+}
+
int
main (int argc, char **argv)
{
@@ -800,6 +811,8 @@ main (int argc, char **argv)
initialize_exit_failure (EXIT_CANCELED);
atexit (close_stdout);
+ initialize_signals ();
+
while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
{
switch (optc)