summaryrefslogtreecommitdiff
path: root/signal.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-11-24 14:25:45 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-11-24 14:25:45 +0000
commit3380a05bd6d5b3df1ddfba974d88b7e82a85b9ee (patch)
tree8eeeb81ecfa9499c78b54af7d54185b4328d223d /signal.c
parentbf1d53e2e0c32af95f852f30884bd6d1fcf1a077 (diff)
* signal.c (register_sigaltstack): should not add external
variable (with some cosmetic changes). [ruby-dev:37158] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r--signal.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/signal.c b/signal.c
index 3ede0ec6db..b6bb12bec9 100644
--- a/signal.c
+++ b/signal.c
@@ -47,11 +47,6 @@ typedef int rb_atomic_t;
# define NSIG (_SIGMAX + 1) /* For QNX */
#endif
-#if defined(SIGSEGV) && defined(HAVE_SIGALTSTACK)
-#define USE_SIGALTSTACK
-int is_altstack_defined = 0;
-#endif
-
static const struct signals {
const char *signm;
int signo;
@@ -415,6 +410,10 @@ static struct {
typedef RETSIGTYPE (*sighandler_t)(int);
#ifdef POSIX_SIGNAL
+#if defined(SIGSEGV) && defined(HAVE_SIGALTSTACK)
+#define USE_SIGALTSTACK
+#endif
+
#ifdef USE_SIGALTSTACK
#ifdef SIGSTKSZ
#define ALT_STACK_SIZE SIGSTKSZ
@@ -422,14 +421,17 @@ typedef RETSIGTYPE (*sighandler_t)(int);
#define ALT_STACK_SIZE (4*1024)
#endif
/* alternate stack for SIGSEGV */
-static void register_sigaltstack() {
+static void
+register_sigaltstack()
+{
+ static int is_altstack_defined = 0;
stack_t newSS, oldSS;
- if(is_altstack_defined)
+ if (is_altstack_defined)
return;
newSS.ss_sp = malloc(ALT_STACK_SIZE);
- if(newSS.ss_sp == NULL)
+ if (newSS.ss_sp == NULL)
/* should handle error */
rb_bug("register_sigaltstack. malloc error\n");
newSS.ss_size = ALT_STACK_SIZE;