Fix assertion failure on failed magic eval - eg FETCH {eval'('}
authorDave Mitchell <davem@fdisolutions.com>
Tue, 10 Jul 2007 23:51:58 +0000 (23:51 +0000)
committerDave Mitchell <davem@fdisolutions.com>
Tue, 10 Jul 2007 23:51:58 +0000 (23:51 +0000)
commit410be5dba347e0340059d489e15d034982d73278
tree693e2b2bdd6ebf4b9c21665d58a6b92260342598
parent131c565afbb207eedaa0a3a4458b1e0ef2716db7
Fix assertion failure on failed magic eval - eg FETCH {eval'('}
S_doeval()'s behaviour varies depending on whether the code
compiles or not; on failure it pops the EVAL context block. This
is bad because later on, S_docatch() assumes that the block is
still there. Make docatch() return a boolean instead, indicating
success. The value it formerly returned (the next op) can be deduced
as PL_eval_start or PL_op->op_next on success/failure.

p4raw-id: //depot/perl@31582
embed.fnc
pp_ctl.c
proto.h
t/op/eval.t