This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fixup to free_and_set_cop_warnings()
authorDavid Mitchell <davem@iabyn.com>
Fri, 20 Mar 2020 09:06:57 +0000 (09:06 +0000)
committerDavid Mitchell <davem@iabyn.com>
Fri, 20 Mar 2020 09:06:57 +0000 (09:06 +0000)
commit1943af6140f72047c5028b50f947b52f8998bebd
treea02ab1e3de087e1e3bc503d0da81238ad9e9c197
parentb33ac5557cb0255702946345f30e9a5ef0e8d88f
fixup to free_and_set_cop_warnings()

v5.31.9-156-g94c8b9c1f0 introduced the free_and_set_cop_warnings()
macro. It's first argument expects a COP rather than a COP*. Its usage
in S_restore_cop_warnings(() is to modify PL_cucop, but in order to pass
a COP rather than a COP*, the original commit made a local copy of
PL_curcop and ended up inadvertently updating the copy instead.

This commit changes the maco so it expects a COP*, and updates the bulk
of its callers to use &PL_compiling rather than PL_compiling, and fixes
up S_restore_cop_warnings().

The symptoms were ASAN failures in a few test scripts including
uni/parser.t and ext/XS-APItest/t/handy0*.t.

(The S_restore_cop_warnings() function was only used by
Perl__force_out_malformed_utf8_message(), so didn't cause many issues
outside of test scripts which forced such "malformed "errors).
mg.c
perl.c
regen/warnings.pl
scope.c
utf8.c
warnings.h