This script was leaking:
$ ./perl -Ilib -wMre=eval -e '$x = "(?{+})"; while(1){eval {/(?{})$x/}}'
The mallocked array that is allocated before compilation to hold the
code blocks was not being freed before the syntax error from the inner
pattern ($x) was propagated.
qr_ref = POPs;
PUTBACK;
if (SvTRUE(ERRSV))
+ {
+ Safefree(pRExC_state->code_blocks);
Perl_croak(aTHX_ "%s", SvPVx_nolen_const(ERRSV));
+ }
assert(SvROK(qr_ref));
qr = SvRV(qr_ref);
assert(SvTYPE(qr) == SVt_REGEXP && RX_ENGINE((REGEXP*)qr)->op_comp);