summaryrefslogtreecommitdiff
path: root/utf8.c
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2022-11-04 10:26:11 +0100
committerYves Orton <demerphq@gmail.com>2022-11-04 10:35:40 +0100
commitfdec6615b5832b7cecbb10b8782630b054a8de4a (patch)
treedfbb4c421d7467427355ce33208fb334f27d0e54 /utf8.c
parent66964e141c6594291e27649d190bc6ca573861f2 (diff)
downloadperl-fdec6615b5832b7cecbb10b8782630b054a8de4a.tar.gz
scope.* - revert and rework SAVECOPWARNINGS change
We can't put PL_compiling or PL_curcop on the save stack as we don't have a way to ensure they cross threads properly. This showed up as a win32 t/op/fork.t failure in the thread based fork emulation layer. This adds a new save type SAVEt_CURCOP_WARNINGS and macro SAVECURCOPWARNINGS() to complement SAVEt_COMPILER_WARNINGS and SAVECOMPILEWARNINGS(). By simply hard coding where the pointers should be restored to we side step the issue of which thread we are in. Thanks to Graham Knop for help identifying that one of my commits was responsible.
Diffstat (limited to 'utf8.c')
-rw-r--r--utf8.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/utf8.c b/utf8.c
index 26baff464b..7c35fb8c12 100644
--- a/utf8.c
+++ b/utf8.c
@@ -76,9 +76,7 @@ Perl__force_out_malformed_utf8_message(pTHX_
PL_dowarn = G_WARN_ALL_ON|G_WARN_ON;
if (PL_curcop) {
- /* this is like SAVECOMPILEWARNINGS() except with PL_curcop rather
- * than PL_compiling */
- SAVECOPWARNINGS(PL_curcop);
+ SAVECURCOPWARNINGS();
PL_curcop->cop_warnings = pWARN_ALL;
}