summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2001-01-18 21:48:02 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2001-01-18 21:48:02 +0000
commit66fe0623488f98a7806a1e9f1451648932318696 (patch)
treea5e1b34f7a1512e317a700e428ff20e9058a8441 /sv.c
parent0a8e0eff0300ee74cef43b18ff11d05a6376450e (diff)
downloadperl-66fe0623488f98a7806a1e9f1451648932318696.tar.gz
Win32 "safe signals" co-existance fix.
Fix SIG_SIZE value. Clear PL_sig_pending when cloning (fork). p4raw-id: //depot/perlio@8475
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index 5f3284dfdb..c14809ba48 100644
--- a/sv.c
+++ b/sv.c
@@ -8440,6 +8440,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_scopestack = 0;
PL_savestack = 0;
PL_retstack = 0;
+ PL_sig_pending = 0;
# else /* !DEBUGGING */
Zero(my_perl, 1, PerlInterpreter);
# endif /* DEBUGGING */
@@ -8466,6 +8467,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_scopestack = 0;
PL_savestack = 0;
PL_retstack = 0;
+ PL_sig_pending = 0;
# else /* !DEBUGGING */
Zero(my_perl, 1, PerlInterpreter);
# endif /* DEBUGGING */
@@ -8865,10 +8867,16 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
PL_uudmap['M'] = 0; /* reinits on demand */
PL_bitcount = Nullch; /* reinits on demand */
+ if (proto_perl->Ipsig_pend) {
+ Newz(0, PL_psig_pend, SIG_SIZE, int);
+ }
+ else {
+ PL_psig_pend = (int*)NULL;
+ }
+
if (proto_perl->Ipsig_ptr) {
Newz(0, PL_psig_ptr, SIG_SIZE, SV*);
Newz(0, PL_psig_name, SIG_SIZE, SV*);
- Newz(0, PL_psig_pend, SIG_SIZE, int);
for (i = 1; i < SIG_SIZE; i++) {
PL_psig_ptr[i] = sv_dup_inc(proto_perl->Ipsig_ptr[i]);
PL_psig_name[i] = sv_dup_inc(proto_perl->Ipsig_name[i]);
@@ -8877,7 +8885,6 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
else {
PL_psig_ptr = (SV**)NULL;
PL_psig_name = (SV**)NULL;
- PL_psig_pend = (int*)NULL;
}
/* thrdvar.h stuff */