diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1998-05-16 21:04:04 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-05-16 21:04:04 +0000 |
commit | 4e6ea2c3b30d1ef2a7f2c68db5d82351f13b502f (patch) | |
tree | e87d56404d662c2bff7ca69affa0f1844fc833db /pp_ctl.c | |
parent | 2216f30a5dac149d1cc2bcb601b9e69c1ff374bf (diff) | |
download | perl-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.c | 42 |
1 files changed, 23 insertions, 19 deletions
@@ -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(); |