diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-01-18 21:48:02 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-01-18 21:48:02 +0000 |
commit | 66fe0623488f98a7806a1e9f1451648932318696 (patch) | |
tree | a5e1b34f7a1512e317a700e428ff20e9058a8441 /sv.c | |
parent | 0a8e0eff0300ee74cef43b18ff11d05a6376450e (diff) | |
download | perl-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.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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 */ |