summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-05-18 17:38:54 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-05-18 17:38:54 +0000
commit64a42268027ff84e02e086a7de2eaa105e4bc8a3 (patch)
tree1d0bb87e73c807afc60834fca9ebd3e74c93f40c
parent592fe52411267c8c3c41f0dd9a5a663f695ce2ed (diff)
parent71d280e38f6b1166e3ba01f7a839868275eb4b7f (diff)
downloadperl-64a42268027ff84e02e086a7de2eaa105e4bc8a3.tar.gz
Integrate with Sarathy.
p4raw-id: //depot/cfgperl@6109
-rw-r--r--mg.c8
-rw-r--r--perl.h1
-rw-r--r--win32/perlhost.h3
3 files changed, 11 insertions, 1 deletions
diff --git a/mg.c b/mg.c
index 0892511727..f0b5734277 100644
--- a/mg.c
+++ b/mg.c
@@ -2100,7 +2100,11 @@ static SV* sig_sv;
Signal_t
Perl_sighandler(int sig)
{
+#if defined(WIN32) && defined(PERL_IMPLICIT_CONTEXT)
+ dTHXoa(PL_curinterp); /* fake TLS, because signals don't do TLS */
+#else
dTHX;
+#endif
dSP;
GV *gv = Nullgv;
HV *st;
@@ -2110,6 +2114,10 @@ Perl_sighandler(int sig)
U32 flags = 0;
I32 o_save_i = PL_savestack_ix;
XPV *tXpv = PL_Xpv;
+
+#if defined(WIN32) && defined(PERL_IMPLICIT_CONTEXT)
+ PERL_SET_THX(aTHXo); /* fake TLS, see above */
+#endif
if (PL_savestack_ix + 15 <= PL_savestack_max)
flags |= 1;
diff --git a/perl.h b/perl.h
index 2f5a5601bf..80683817a5 100644
--- a/perl.h
+++ b/perl.h
@@ -242,6 +242,7 @@ struct perl_thread;
# define aTHXo aTHX
# define aTHXo_ aTHX_
# define dTHXo dTHX
+# define dTHXoa(x) dTHXa(x)
#endif
#ifndef pTHXx
diff --git a/win32/perlhost.h b/win32/perlhost.h
index 51e125b848..ea0d31d9dd 100644
--- a/win32/perlhost.h
+++ b/win32/perlhost.h
@@ -10,6 +10,7 @@
#ifndef ___PerlHost_H___
#define ___PerlHost_H___
+#include <signal.h>
#include "iperlsys.h"
#include "vmem.h"
#include "vdir.h"
@@ -1639,7 +1640,7 @@ PerlProcWaitpid(struct IPerlProc* piPerl, int pid, int *status, int flags)
Sighandler_t
PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode)
{
- return 0;
+ return signal(sig, subcode);
}
#ifdef USE_ITHREADS