regexec.c: Safer stack handling for re-evals

I don’t believe there is an actual bug here (only a theoretical one), but comparing pointers into an array that has been reallocated meanwhile is not a good idea.
Stop /(??{})/ from leaking temporary regexps
Fix assertion failures with anon subs

In commit 9ffcdca1f50, I did not take into account that the newATTRSUB’s
caller makes sure that the CV is freed if it is an anonymous sub.  So I
only needed to free the sub explicitly after a syntax error for a named
sub.

By returning 0 for anonymous subs as well, I ended up causing assertion
failures.  Why I wasn’t getting them before I don’t know, as I was using
a debugging build.
leakfinder.pl: More exceptions
dTHX implies dVAR, using both fails to build under -DPERL_GLOBAL_STRUCT
Preserve case for the current perldelta on VMS.

Both MMS and MMK upcase whenever there is a double macro expansion,
but by going through only one expansion, we can preserve the case
of the target filename on copy under extended parse.
op.c: Fix mad+POISON build under clang
Fix various mad eval leaks

Several SVs that exist for the sake of mad dumps were being set up
even for normal execution.
leakfinder.pl: more exceptions
Sync Module-CoreList in Maintainers.pl with CPAN
Update Unicode-Collate to CPAN version 0.92

  [DELTA]

  0.92  Wed Nov 14 20:58:19 2012
    - fix: index() etc. with preprocess/normalization should be always croaked.
    - doc: referred to the latest UTS #10 and updated its section numbers.
    - supported the identical level (see 'identical' in POD).
    - Now UCA_Version 26 (for Unicode 6.2.0) is supported.
    - added ident.t in t.
    - modified tests: cjkrange.t, compatui.t, hangtype.t, index.t,
      overcjk0.t, overcjk1.t, test.t, view.t in t.

    * But the default UCA_Version is still 24.
     (In the next release, UCA_Version 26 will be the default.)
utf8.c: Don't copy a buffer to itself

memcpy(), which is what Copy() resolves to, is not supposed to handle
the possibility of overlapping source and destination.  In some cases
in this code, the source and destination pointers are identical.  What
should happen then is a no-op, so just don't do the copy in that case.
If the ptrs aren't identical, they won't otherwise overlap, so the
Copy() is valid except for when they are identical.
Stop my subs with syntax errors from leaking
Stop eval "END OF TERMS" from leaking

I found this memory leak by evaluating lines of the Copying file as
Perl code. :-)

The parser requires yylex to return exactly one token with each call.
Sometimes yylex needs to record a few tokens ahead of time, so its
puts them in its forced token stack.  The next call to yylex then pops
the pending token off that stack.

Ops belong to their subroutines.  If the subroutine is freed before
its root is attached, all the ops created when PL_compcv pointed
to that sub are freed as well.  To avoid crashes, the ops on the
savestack and the forced token stack are specially marked so they are
not freed when the sub is freed.

When it comes to evaluating "END OF TERMS AND CONDITIONS", the END
token causes a subroutine to be created and placed in PL_compcv.  The
OF token is treated by the lexer as a method call on the TERMS pack-
age.  The TERMS token is placed in the forced token stack as an sv in
an op for a WORD token, and a METHOD token for OF is returned.  As
soon as the parser sees the OF, it generates an error, which results
in LEAVE_SCOPE being called, which frees the subroutine for END while
TERMS is still on the forced token stack.  So the subroutine’s op
cleanup skips that op.  Then the parser calls back into the lexer,
which returns the TERMS token from the forced token stack.  Since
there has been an error, the parser discards that token, so the op
is never freed.  The forced token stack cleanup that happens in
parser_free does not catch this, as the token is no longer on
that stack.

Earlier, to solve the problem of yylex returning freed ops to the
parser, resulting in crashes, I set the op_savefree flag on ops on the
forced token stack.  But that resulted in a leak.

So now I am using a different approach: When the sub is freed and
frees all its ops, have it also look in the parser’s forced token
stack, freeing any ops that belong to it, and setting the point-
ers to null.
remove most calls to strlen in S_force_ident

I saw strlen("\"") being called here, where the string came from
Perl_yylex. This commit provides a shortcut to not call strlen for a
1 character + null character string.
Combine duplicate dump code

Combine op_flags and op_private dumper for MAD (xml) and -Dx dump.
Add some previously missing flags.
leakfinder.pl: Duh!

I hadn’t tested this before I committed it.  It had a syntax error.
SVf_IsCOW

As discussed in ticket #114820, instead of using READONLY+FAKE to mark
a copy-on-write string, we should make it a separate flag.

There are many modules in CPAN (and 1 in core, Compress::Raw::Zlib)
that assume that SvREADONLY means read-only.  Only one CPAN module,
POSIX::pselect will definitely be broken by this.  Others may need to
be tweaked.  But I believe this is for the better.

It causes all tests except ext/Devel-Peek/t/Peek.t (which needs a tiny
tweak still) to pass under PERL_OLD_COPY_ON_WRITE, which is a prereq-
uisite for any new COW scheme that creates COWs under the same cir-
cumstances.
dump.c: Fix non-mad threaded build error

This was introduced by 75a6ad4aa3.

C preprocessors treat the ‘aTHX_ foo’ in MACRO(aTHX_ foo) as a sin-
gle argument.