summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1998-05-16 21:04:04 +0000
committerGurusamy Sarathy <gsar@cpan.org>1998-05-16 21:04:04 +0000
commit4e6ea2c3b30d1ef2a7f2c68db5d82351f13b502f (patch)
treee87d56404d662c2bff7ca69affa0f1844fc833db /pp_ctl.c
parent2216f30a5dac149d1cc2bcb601b9e69c1ff374bf (diff)
downloadperl-4e6ea2c3b30d1ef2a7f2c68db5d82351f13b502f.tar.gz
[win32] merge change#985 from maintbranch
p4raw-link: @985 on //depot/maint-5.004/perl: cb99a88456c6181881501e9f4881bc3d3d3e919e p4raw-id: //depot/win32/perl@1002
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index 75cf077b7b..55881de638 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1041,29 +1041,33 @@ die_where(char *message)
I32 gimme;
SV **newsp;
- if (in_eval & 4) {
- SV **svp;
- STRLEN klen = strlen(message);
-
- svp = hv_fetch(ERRHV, message, klen, TRUE);
- if (svp) {
- if (!SvIOK(*svp)) {
- static char prefix[] = "\t(in cleanup) ";
- SV *err = ERRSV;
- sv_upgrade(*svp, SVt_IV);
- (void)SvIOK_only(*svp);
- if (!SvPOK(err))
- sv_setpv(err,"");
- SvGROW(err, SvCUR(err)+sizeof(prefix)+klen);
- sv_catpvn(err, prefix, sizeof(prefix)-1);
- sv_catpvn(err, message, klen);
+ if (message) {
+ if (in_eval & 4) {
+ SV **svp;
+ STRLEN klen = strlen(message);
+
+ svp = hv_fetch(ERRHV, message, klen, TRUE);
+ if (svp) {
+ if (!SvIOK(*svp)) {
+ static char prefix[] = "\t(in cleanup) ";
+ SV *err = ERRSV;
+ sv_upgrade(*svp, SVt_IV);
+ (void)SvIOK_only(*svp);
+ if (!SvPOK(err))
+ sv_setpv(err,"");
+ SvGROW(err, SvCUR(err)+sizeof(prefix)+klen);
+ sv_catpvn(err, prefix, sizeof(prefix)-1);
+ sv_catpvn(err, message, klen);
+ }
+ sv_inc(*svp);
}
- sv_inc(*svp);
}
+ else
+ sv_setpv(ERRSV, message);
}
else
- sv_setpv(ERRSV, message);
-
+ message = SvPVx(ERRSV, na);
+
while ((cxix = dopoptoeval(cxstack_ix)) < 0 && curstackinfo->si_prev) {
dounwind(-1);
POPSTACK();