summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2008-12-02 16:20:01 +0000
committerNicholas Clark <nick@ccl4.org>2008-12-02 16:20:01 +0000
commit83fca67e98dfae0d928a42dd87ba57ec05eeb359 (patch)
tree1ca64a2b2ab1b7cbf602074efab7a52fba0b7dd1 /pp_ctl.c
parent925cfbb8b123624a89955b99570bfeaf8242cbf5 (diff)
downloadperl-83fca67e98dfae0d928a42dd87ba57ec05eeb359.tar.gz
Followup to change 34979. Tests are good, m'kay. Particularly when they
show you that something you thought worked doesn't. Sadly it's not possible to trivially make it work, so for now they're todo_skip(). p4raw-id: //depot/perl@34981
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index a3b0b0fb3b..803ca05846 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -3733,7 +3733,16 @@ PP(pp_entereval)
if (ok ? (was != PL_breakable_sub_gen /* Some subs defined here. */
? (PERLDB_LINE || PERLDB_SAVESRC)
: PERLDB_SAVESRC_NOSUBS)
- : PERLDB_SAVESRC_INVALID) {
+ : 0 /* PERLDB_SAVESRC_INVALID */
+ /* Much that I'd like to think that it was this trivial to add this
+ feature, it's not, due to
+ lex_end();
+ LEAVE;
+ in S_doeval() for the failure case. So really we want a more
+ sophisticated way of (optionally) clearing the source code.
+ Particularly as the current way is buggy, as a syntactically
+ invalid eval string can still define a subroutine that is retained,
+ and the user may wish to breakpoint. */) {
/* Just need to change the string in our writable scratch buffer that
will be used at scope exit to delete this eval's "file" name, to
something safe. The key names are of the form "_<(eval 1)" upwards,