narrower localisation of PL_compcv around eval
authorZefram <zefram@fysh.org>
Sat, 19 Nov 2011 16:00:32 +0000 (16:00 +0000)
committerZefram <zefram@fysh.org>
Sat, 19 Nov 2011 16:05:57 +0000 (16:05 +0000)
commit676a678ac0683a727a07d56ed1a6e1fb59085d5a
tree949be32a9c809bdc0c50b6e1d7d35a8fe371bd59
parentfde67290e2c173e19d166b4f9a9514f6f16dbb75
narrower localisation of PL_compcv around eval

PL_compcv used to be localised around the entire string eval process,
and hence at runtime of the evaled code would refer to the evaled code
rather than code of a surrounding compilation.  This interfered with the
ability of string-evaled code in a BEGIN block to affect the surrounding
compilation, in a similar way to the localisation of $^H and %^H that
was fixed in f45b078d20.

Similar to the fix there, this change moves the localisation of PL_compcv
inside the new evalcomp scope.  A couple of things were relying on
PL_compcv to find the running code when in a string-eval scope; they now
need to find it from cx->blk_eval.cv, which was already being populated.
dump.c
pp_ctl.c