summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1998-05-14 09:06:18 +0000
committerGurusamy Sarathy <gsar@cpan.org>1998-05-14 09:06:18 +0000
commit491527d0220de34ec13035d557e288c9952d1007 (patch)
tree683ef586eb7bbf72dee104e2b0fd44cc8298b444 /pp_ctl.c
parenta3cb178b0bad32fa8be934503d051b96a3cb1fea (diff)
downloadperl-491527d0220de34ec13035d557e288c9952d1007.tar.gz
[win32] merge change#886 from maintbranch
p4raw-link: @886 on //depot/maint-5.004/perl: 6dba07070c2cb08ffbc6e00eff60e8f5fc9a7ee8 p4raw-id: //depot/win32/perl@936
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index f54bb75291..f6934e9f3b 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1877,14 +1877,26 @@ PP(pp_goto)
mark++;
}
}
- if (PERLDB_SUB && curstash != debstash) {
+ if (PERLDB_SUB) { /* Checking curstash breaks DProf. */
/*
* We do not care about using sv to call CV;
* it's for informational purposes only.
*/
SV *sv = GvSV(DBsub);
- save_item(sv);
- gv_efullname3(sv, CvGV(cv), Nullch);
+ CV *gotocv;
+
+ if (PERLDB_SUB_NN) {
+ SvIVX(sv) = (IV)cv; /* Already upgraded, saved */
+ } else {
+ save_item(sv);
+ gv_efullname3(sv, CvGV(cv), Nullch);
+ }
+ if ( PERLDB_GOTO
+ && (gotocv = perl_get_cv("DB::goto", FALSE)) ) {
+ PUSHMARK( stack_sp );
+ perl_call_sv((SV*)gotocv, G_SCALAR | G_NODEBUG);
+ stack_sp--;
+ }
}
RETURNOP(CvSTART(cv));
}