summaryrefslogtreecommitdiff
path: root/perl.h
diff options
context:
space:
mode:
authorChip Salzenberg <chip@pobox.com>2003-07-10 09:13:20 -0400
committerJarkko Hietaniemi <jhi@iki.fi>2003-07-10 17:33:53 +0000
commitb35112e751727d4207068fd54bf0c9d77ad0ba97 (patch)
treea7c3178c72e3442ae7dd539f8e3b913dbd62c938 /perl.h
parent669f94828c50674b20ed995418707226081e2671 (diff)
downloadperl-b35112e751727d4207068fd54bf0c9d77ad0ba97.tar.gz
Restore SIGFPE on exec()
Message-ID: <20030710171319.GA21588@perlsupport.com> p4raw-id: //depot/perl@20117
Diffstat (limited to 'perl.h')
-rw-r--r--perl.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/perl.h b/perl.h
index a361e0f234..cb43a3d6f1 100644
--- a/perl.h
+++ b/perl.h
@@ -1935,12 +1935,18 @@ typedef struct clone_params CLONE_PARAMS;
# define PERL_FPU_INIT fpsetmask(0);
# else
# if defined(SIGFPE) && defined(SIG_IGN)
-# define PERL_FPU_INIT signal(SIGFPE, SIG_IGN);
+# define PERL_FPU_INIT PL_sigfpe_saved = signal(SIGFPE, SIG_IGN)
+# define PERL_FPU_PRE_EXEC { Sigsave_t xfpe; rsignal_save(SIGFPE, PL_sigfpe_saved, &xfpe);
+# define PERL_FPU_POST_EXEC rsignal_restore(SIGFPE, &xfpe); }
# else
# define PERL_FPU_INIT
# endif
# endif
#endif
+#ifndef PERL_FPU_PRE_EXEC
+# define PERL_FPU_PRE_EXEC {
+# define PERL_FPU_POST_EXEC }
+#endif
#ifndef PERL_SYS_INIT3
# define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp)