summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1997-10-28 15:06:06 -0500
committerGurusamy Sarathy <gsar@cpan.org>1997-11-26 01:17:46 +0000
commit00d579c5f79d1baaed14ef28a9c9de3c6d64f4d0 (patch)
tree6cdc1e4f43c513d2f6fef828766d7983a081569d /mg.c
parentc31fac668b253062b943c71d3452e678b6f02609 (diff)
downloadperl-00d579c5f79d1baaed14ef28a9c9de3c6d64f4d0.tar.gz
[win32] Sync a change from local repository.
Message-Id: <199710290106.UAA11485@aatma.engin.umich.edu> Subject: [PATCH] Re: Core dump from using sockets w/ system or open(pipe) or "`" p4raw-id: //depot/win32/perl@306
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/mg.c b/mg.c
index b7b09d34a1..8a7cfdda14 100644
--- a/mg.c
+++ b/mg.c
@@ -1733,10 +1733,10 @@ Signal_t
sighandler(int sig)
{
dSP;
- GV *gv;
+ GV *gv = Nullgv;
HV *st;
SV *sv, *tSv = Sv;
- CV *cv;
+ CV *cv = Nullcv;
AV *oldstack;
OP *myop = op;
U32 flags = 0;
@@ -1788,8 +1788,11 @@ sighandler(int sig)
if (!cv || !CvROOT(cv)) {
if (dowarn)
warn("SIG%s handler \"%s\" not defined.\n",
- sig_name[sig], GvENAME(gv) );
- return;
+ sig_name[sig], (gv ? GvENAME(gv)
+ : ((cv && CvGV(cv))
+ ? GvENAME(CvGV(cv))
+ : "__ANON__")));
+ goto cleanup;
}
oldstack = curstack;
@@ -1812,6 +1815,7 @@ sighandler(int sig)
perl_call_sv((SV*)cv, G_DISCARD);
SWITCHSTACK(signalstack, oldstack);
+cleanup:
if (flags & 1)
savestack_ix -= 8; /* Unprotect save in progress. */
if (flags & 2) {