Branch: refs/heads/yves/fix_setjmp_warning_doeval_compile Home: https://github.com/Perl/perl5 Commit: 8533d4048783629583a8f991570ad3f103d0e4ee https://github.com/Perl/perl5/commit/8533d4048783629583a8f991570ad3f103d0e4ee Author: Yves Orton <demer...@gmail.com> Date: 2022-09-05 (Mon, 05 Sep 2022)
Changed paths: M pp_ctl.c Log Message: ----------- pp_ctl.c - move "UNITCHECK in an eval" JMPENV_PUSH() logic to a function This creates S_try_run_unitcheck(), which is similar to S_try_yyparse(), in that it runs the subs in PL_unitcheckav inside of a JMPENV_PUSH() and JMPENV_POP wrapper so that any call to Perl_croak() inside of one of the blocks ends back in the right place. This is used to handle UNITCHECK blocks defined inside of an eval STRING which is compiled and executed as part of doeval_compile() in pp_ctl.c Both of these functions are private to pp_ctl.c and not listed in embed.c and are used to trap the setjmp/longjmp calls and handle exceptions during eval. This fixes a cryptic warning about a variable being used across setjmp in pp_ctl.c doeval_compile(), which turns out to be evalcv. By wrapping the JMPENV_PUSH logic in a light wrapper these issues are moved one layer down the stack and avoided.