Skip to content

Commit a8def80

Browse files
committed
Move regex global variables to interpreter level
This is part of fixing gh #17154 This scenario from the ticket (#17154 (comment)) shows why this fix is necessary: main interpreter initializes PL_AboveLatin1 to an SV it owns loads threads::lite and creates a new thread/interpreter which initializes PL_AboveLatin1 to a SV owned by the new interpreter threads::lite child interpreter finishes, freeing all of its SVs, PL_AboveLatin1 is now invalid main interpreter uses a regexp that relies on PL_AboveLatin1, dies horribly. By making these interpreter level variables, this is avoided. There is extra copying, but it is just the SV headers, as the real data is kept as static C arrays.
1 parent e4b61f9 commit a8def80

File tree

7 files changed

+177
-160
lines changed

7 files changed

+177
-160
lines changed

embedvar.h

Lines changed: 31 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
# define vTHX PERL_GET_INTERP
4141
# endif
4242

43+
#define PL_AboveLatin1 (vTHX->IAboveLatin1)
44+
#define PL_Assigned_invlist (vTHX->IAssigned_invlist)
45+
#define PL_CCC_non0_non230 (vTHX->ICCC_non0_non230)
4346
#define PL_DBcontrol (vTHX->IDBcontrol)
4447
#define PL_DBcv (vTHX->IDBcv)
4548
#define PL_DBgv (vTHX->IDBgv)
@@ -50,15 +53,28 @@
5053
#define PL_DBtrace (vTHX->IDBtrace)
5154
#define PL_Dir (vTHX->IDir)
5255
#define PL_Env (vTHX->IEnv)
56+
#define PL_GCB_invlist (vTHX->IGCB_invlist)
57+
#define PL_HasMultiCharFold (vTHX->IHasMultiCharFold)
58+
#define PL_InBitmap (vTHX->IInBitmap)
59+
#define PL_InMultiCharFold (vTHX->IInMultiCharFold)
60+
#define PL_LB_invlist (vTHX->ILB_invlist)
5361
#define PL_LIO (vTHX->ILIO)
62+
#define PL_Latin1 (vTHX->ILatin1)
5463
#define PL_Mem (vTHX->IMem)
5564
#define PL_MemParse (vTHX->IMemParse)
5665
#define PL_MemShared (vTHX->IMemShared)
66+
#define PL_Posix_ptrs (vTHX->IPosix_ptrs)
67+
#define PL_Private_Use (vTHX->IPrivate_Use)
5768
#define PL_Proc (vTHX->IProc)
69+
#define PL_SB_invlist (vTHX->ISB_invlist)
70+
#define PL_SCX_invlist (vTHX->ISCX_invlist)
5871
#define PL_Sock (vTHX->ISock)
5972
#define PL_StdIO (vTHX->IStdIO)
6073
#define PL_Sv (vTHX->ISv)
6174
#define PL_TR_SPECIAL_HANDLING_UTF8 (vTHX->ITR_SPECIAL_HANDLING_UTF8)
75+
#define PL_UpperLatin1 (vTHX->IUpperLatin1)
76+
#define PL_WB_invlist (vTHX->IWB_invlist)
77+
#define PL_XPosix_ptrs (vTHX->IXPosix_ptrs)
6278
#define PL_Xpv (vTHX->IXpv)
6379
#define PL_an (vTHX->Ian)
6480
#define PL_argvgv (vTHX->Iargvgv)
@@ -156,6 +172,7 @@
156172
#define PL_in_clean_objs (vTHX->Iin_clean_objs)
157173
#define PL_in_eval (vTHX->Iin_eval)
158174
#define PL_in_load_module (vTHX->Iin_load_module)
175+
#define PL_in_some_fold (vTHX->Iin_some_fold)
159176
#define PL_in_utf8_COLLATE_locale (vTHX->Iin_utf8_COLLATE_locale)
160177
#define PL_in_utf8_CTYPE_locale (vTHX->Iin_utf8_CTYPE_locale)
161178
#define PL_in_utf8_turkic_locale (vTHX->Iin_utf8_turkic_locale)
@@ -332,6 +349,20 @@
332349
#define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
333350
#define PL_unlockhook (vTHX->Iunlockhook)
334351
#define PL_unsafe (vTHX->Iunsafe)
352+
#define PL_utf8_charname_begin (vTHX->Iutf8_charname_begin)
353+
#define PL_utf8_charname_continue (vTHX->Iutf8_charname_continue)
354+
#define PL_utf8_idcont (vTHX->Iutf8_idcont)
355+
#define PL_utf8_idstart (vTHX->Iutf8_idstart)
356+
#define PL_utf8_mark (vTHX->Iutf8_mark)
357+
#define PL_utf8_perl_idcont (vTHX->Iutf8_perl_idcont)
358+
#define PL_utf8_perl_idstart (vTHX->Iutf8_perl_idstart)
359+
#define PL_utf8_tofold (vTHX->Iutf8_tofold)
360+
#define PL_utf8_tolower (vTHX->Iutf8_tolower)
361+
#define PL_utf8_tosimplefold (vTHX->Iutf8_tosimplefold)
362+
#define PL_utf8_totitle (vTHX->Iutf8_totitle)
363+
#define PL_utf8_toupper (vTHX->Iutf8_toupper)
364+
#define PL_utf8_xidcont (vTHX->Iutf8_xidcont)
365+
#define PL_utf8_xidstart (vTHX->Iutf8_xidstart)
335366
#define PL_utf8cache (vTHX->Iutf8cache)
336367
#define PL_utf8locale (vTHX->Iutf8locale)
337368
#define PL_warn_locale (vTHX->Iwarn_locale)
@@ -344,40 +375,8 @@
344375

345376
#if defined(PERL_GLOBAL_STRUCT)
346377

347-
#define PL_AboveLatin1 (my_vars->GAboveLatin1)
348-
#define PL_GAboveLatin1 (my_vars->GAboveLatin1)
349-
#define PL_Assigned_invlist (my_vars->GAssigned_invlist)
350-
#define PL_GAssigned_invlist (my_vars->GAssigned_invlist)
351-
#define PL_CCC_non0_non230 (my_vars->GCCC_non0_non230)
352-
#define PL_GCCC_non0_non230 (my_vars->GCCC_non0_non230)
353378
#define PL_C_locale_obj (my_vars->GC_locale_obj)
354379
#define PL_GC_locale_obj (my_vars->GC_locale_obj)
355-
#define PL_GCB_invlist (my_vars->GGCB_invlist)
356-
#define PL_GGCB_invlist (my_vars->GGCB_invlist)
357-
#define PL_HasMultiCharFold (my_vars->GHasMultiCharFold)
358-
#define PL_GHasMultiCharFold (my_vars->GHasMultiCharFold)
359-
#define PL_InBitmap (my_vars->GInBitmap)
360-
#define PL_GInBitmap (my_vars->GInBitmap)
361-
#define PL_InMultiCharFold (my_vars->GInMultiCharFold)
362-
#define PL_GInMultiCharFold (my_vars->GInMultiCharFold)
363-
#define PL_LB_invlist (my_vars->GLB_invlist)
364-
#define PL_GLB_invlist (my_vars->GLB_invlist)
365-
#define PL_Latin1 (my_vars->GLatin1)
366-
#define PL_GLatin1 (my_vars->GLatin1)
367-
#define PL_Posix_ptrs (my_vars->GPosix_ptrs)
368-
#define PL_GPosix_ptrs (my_vars->GPosix_ptrs)
369-
#define PL_Private_Use (my_vars->GPrivate_Use)
370-
#define PL_GPrivate_Use (my_vars->GPrivate_Use)
371-
#define PL_SB_invlist (my_vars->GSB_invlist)
372-
#define PL_GSB_invlist (my_vars->GSB_invlist)
373-
#define PL_SCX_invlist (my_vars->GSCX_invlist)
374-
#define PL_GSCX_invlist (my_vars->GSCX_invlist)
375-
#define PL_UpperLatin1 (my_vars->GUpperLatin1)
376-
#define PL_GUpperLatin1 (my_vars->GUpperLatin1)
377-
#define PL_WB_invlist (my_vars->GWB_invlist)
378-
#define PL_GWB_invlist (my_vars->GWB_invlist)
379-
#define PL_XPosix_ptrs (my_vars->GXPosix_ptrs)
380-
#define PL_GXPosix_ptrs (my_vars->GXPosix_ptrs)
381380
#define PL_appctx (my_vars->Gappctx)
382381
#define PL_Gappctx (my_vars->Gappctx)
383382
#define PL_check (my_vars->Gcheck)
@@ -408,8 +407,6 @@
408407
#define PL_Ghash_state (my_vars->Ghash_state)
409408
#define PL_hints_mutex (my_vars->Ghints_mutex)
410409
#define PL_Ghints_mutex (my_vars->Ghints_mutex)
411-
#define PL_in_some_fold (my_vars->Gin_some_fold)
412-
#define PL_Gin_some_fold (my_vars->Gin_some_fold)
413410
#define PL_keyword_plugin (my_vars->Gkeyword_plugin)
414411
#define PL_Gkeyword_plugin (my_vars->Gkeyword_plugin)
415412
#define PL_keyword_plugin_mutex (my_vars->Gkeyword_plugin_mutex)
@@ -496,36 +493,8 @@
496493
#define PL_Guser_def_props_aTHX (my_vars->Guser_def_props_aTHX)
497494
#define PL_user_prop_mutex (my_vars->Guser_prop_mutex)
498495
#define PL_Guser_prop_mutex (my_vars->Guser_prop_mutex)
499-
#define PL_utf8_charname_begin (my_vars->Gutf8_charname_begin)
500-
#define PL_Gutf8_charname_begin (my_vars->Gutf8_charname_begin)
501-
#define PL_utf8_charname_continue (my_vars->Gutf8_charname_continue)
502-
#define PL_Gutf8_charname_continue (my_vars->Gutf8_charname_continue)
503496
#define PL_utf8_foldclosures (my_vars->Gutf8_foldclosures)
504497
#define PL_Gutf8_foldclosures (my_vars->Gutf8_foldclosures)
505-
#define PL_utf8_idcont (my_vars->Gutf8_idcont)
506-
#define PL_Gutf8_idcont (my_vars->Gutf8_idcont)
507-
#define PL_utf8_idstart (my_vars->Gutf8_idstart)
508-
#define PL_Gutf8_idstart (my_vars->Gutf8_idstart)
509-
#define PL_utf8_mark (my_vars->Gutf8_mark)
510-
#define PL_Gutf8_mark (my_vars->Gutf8_mark)
511-
#define PL_utf8_perl_idcont (my_vars->Gutf8_perl_idcont)
512-
#define PL_Gutf8_perl_idcont (my_vars->Gutf8_perl_idcont)
513-
#define PL_utf8_perl_idstart (my_vars->Gutf8_perl_idstart)
514-
#define PL_Gutf8_perl_idstart (my_vars->Gutf8_perl_idstart)
515-
#define PL_utf8_tofold (my_vars->Gutf8_tofold)
516-
#define PL_Gutf8_tofold (my_vars->Gutf8_tofold)
517-
#define PL_utf8_tolower (my_vars->Gutf8_tolower)
518-
#define PL_Gutf8_tolower (my_vars->Gutf8_tolower)
519-
#define PL_utf8_tosimplefold (my_vars->Gutf8_tosimplefold)
520-
#define PL_Gutf8_tosimplefold (my_vars->Gutf8_tosimplefold)
521-
#define PL_utf8_totitle (my_vars->Gutf8_totitle)
522-
#define PL_Gutf8_totitle (my_vars->Gutf8_totitle)
523-
#define PL_utf8_toupper (my_vars->Gutf8_toupper)
524-
#define PL_Gutf8_toupper (my_vars->Gutf8_toupper)
525-
#define PL_utf8_xidcont (my_vars->Gutf8_xidcont)
526-
#define PL_Gutf8_xidcont (my_vars->Gutf8_xidcont)
527-
#define PL_utf8_xidstart (my_vars->Gutf8_xidstart)
528-
#define PL_Gutf8_xidstart (my_vars->Gutf8_xidstart)
529498
#define PL_veto_cleanup (my_vars->Gveto_cleanup)
530499
#define PL_Gveto_cleanup (my_vars->Gveto_cleanup)
531500
#define PL_watch_pvx (my_vars->Gwatch_pvx)

intrpvar.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,41 @@ PERLVAR(I, internal_random_state, PL_RANDOM_STATE_TYPE)
898898

899899
PERLVARA(I, TR_SPECIAL_HANDLING_UTF8, UTF8_MAXBYTES, char)
900900

901+
PERLVAR(I, AboveLatin1, SV *)
902+
PERLVAR(I, Assigned_invlist, SV *)
903+
PERLVAR(I, GCB_invlist, SV *)
904+
PERLVAR(I, HasMultiCharFold, SV *)
905+
PERLVAR(I, InMultiCharFold, SV *)
906+
PERLVAR(I, Latin1, SV *)
907+
PERLVAR(I, LB_invlist, SV *)
908+
PERLVAR(I, SB_invlist, SV *)
909+
PERLVAR(I, SCX_invlist, SV *)
910+
PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */
911+
912+
/* List of characters that participate in any fold defined by Unicode */
913+
PERLVAR(I, in_some_fold, SV *)
914+
915+
PERLVAR(I, utf8_idcont, SV *)
916+
PERLVAR(I, utf8_idstart, SV *)
917+
PERLVAR(I, utf8_perl_idcont, SV *)
918+
PERLVAR(I, utf8_perl_idstart, SV *)
919+
PERLVAR(I, utf8_xidcont, SV *)
920+
PERLVAR(I, utf8_xidstart, SV *)
921+
PERLVAR(I, WB_invlist, SV *)
922+
PERLVARA(I, XPosix_ptrs, POSIX_CC_COUNT, SV *)
923+
PERLVARA(I, Posix_ptrs, POSIX_CC_COUNT, SV *)
924+
PERLVAR(I, utf8_toupper, SV *)
925+
PERLVAR(I, utf8_totitle, SV *)
926+
PERLVAR(I, utf8_tolower, SV *)
927+
PERLVAR(I, utf8_tofold, SV *)
928+
PERLVAR(I, utf8_tosimplefold, SV *)
929+
PERLVAR(I, utf8_charname_begin, SV *)
930+
PERLVAR(I, utf8_charname_continue, SV *)
931+
PERLVAR(I, utf8_mark, SV *)
932+
PERLVARI(I, InBitmap, SV *, NULL)
933+
PERLVAR(I, CCC_non0_non230, SV *)
934+
PERLVAR(I, Private_Use, SV *)
935+
901936
/* If you are adding a U8 or U16, check to see if there are 'Space' comments
902937
* above on where there are gaps which currently will be structure padding. */
903938

perl.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,75 @@ perl_destruct(pTHXx)
11971197
PL_warn_locale = NULL;
11981198
#endif
11991199

1200+
SvREFCNT_dec(PL_AboveLatin1);
1201+
PL_AboveLatin1 = NULL;
1202+
SvREFCNT_dec(PL_Assigned_invlist);
1203+
PL_Assigned_invlist = NULL;
1204+
SvREFCNT_dec(PL_GCB_invlist);
1205+
PL_GCB_invlist = NULL;
1206+
SvREFCNT_dec(PL_HasMultiCharFold);
1207+
PL_HasMultiCharFold = NULL;
1208+
SvREFCNT_dec(PL_InMultiCharFold);
1209+
PL_InMultiCharFold = NULL;
1210+
SvREFCNT_dec(PL_Latin1);
1211+
PL_Latin1 = NULL;
1212+
SvREFCNT_dec(PL_LB_invlist);
1213+
PL_LB_invlist = NULL;
1214+
SvREFCNT_dec(PL_SB_invlist);
1215+
PL_SB_invlist = NULL;
1216+
SvREFCNT_dec(PL_SCX_invlist);
1217+
PL_SCX_invlist = NULL;
1218+
SvREFCNT_dec(PL_UpperLatin1);
1219+
PL_UpperLatin1 = NULL;
1220+
SvREFCNT_dec(PL_in_some_fold);
1221+
PL_in_some_fold = NULL;
1222+
SvREFCNT_dec(PL_utf8_idcont);
1223+
PL_utf8_idcont = NULL;
1224+
SvREFCNT_dec(PL_utf8_idstart);
1225+
PL_utf8_idstart = NULL;
1226+
SvREFCNT_dec(PL_utf8_perl_idcont);
1227+
PL_utf8_perl_idcont = NULL;
1228+
SvREFCNT_dec(PL_utf8_perl_idstart);
1229+
PL_utf8_perl_idstart = NULL;
1230+
SvREFCNT_dec(PL_utf8_xidcont);
1231+
PL_utf8_xidcont = NULL;
1232+
SvREFCNT_dec(PL_utf8_xidstart);
1233+
PL_utf8_xidstart = NULL;
1234+
SvREFCNT_dec(PL_WB_invlist);
1235+
PL_WB_invlist = NULL;
1236+
SvREFCNT_dec(PL_utf8_toupper);
1237+
PL_utf8_toupper = NULL;
1238+
SvREFCNT_dec(PL_utf8_totitle);
1239+
PL_utf8_totitle = NULL;
1240+
SvREFCNT_dec(PL_utf8_tolower);
1241+
PL_utf8_tolower = NULL;
1242+
SvREFCNT_dec(PL_utf8_tofold);
1243+
PL_utf8_tofold = NULL;
1244+
SvREFCNT_dec(PL_utf8_tosimplefold);
1245+
PL_utf8_tosimplefold = NULL;
1246+
SvREFCNT_dec(PL_utf8_charname_begin);
1247+
PL_utf8_charname_begin = NULL;
1248+
SvREFCNT_dec(PL_utf8_charname_continue);
1249+
PL_utf8_charname_continue = NULL;
1250+
SvREFCNT_dec(PL_utf8_mark);
1251+
PL_utf8_mark = NULL;
1252+
SvREFCNT_dec(PL_InBitmap);
1253+
PL_InBitmap = NULL;
1254+
SvREFCNT_dec(PL_CCC_non0_non230);
1255+
PL_CCC_non0_non230 = NULL;
1256+
SvREFCNT_dec(PL_Private_Use);
1257+
PL_Private_Use = NULL;
1258+
1259+
for (i = 0; i < POSIX_CC_COUNT; i++) {
1260+
SvREFCNT_dec(PL_XPosix_ptrs[i]);
1261+
PL_XPosix_ptrs[i] = NULL;
1262+
1263+
if (i != _CC_CASED) { /* A copy of Alpha */
1264+
SvREFCNT_dec(PL_Posix_ptrs[i]);
1265+
PL_Posix_ptrs[i] = NULL;
1266+
}
1267+
}
1268+
12001269
if (!specialWARN(PL_compiling.cop_warnings))
12011270
PerlMemShared_free(PL_compiling.cop_warnings);
12021271
PL_compiling.cop_warnings = NULL;

perlapi.h

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -99,40 +99,8 @@ END_EXTERN_C
9999

100100
#else /* !PERL_CORE */
101101

102-
#undef PL_AboveLatin1
103-
#define PL_AboveLatin1 (*Perl_GAboveLatin1_ptr(NULL))
104-
#undef PL_Assigned_invlist
105-
#define PL_Assigned_invlist (*Perl_GAssigned_invlist_ptr(NULL))
106-
#undef PL_CCC_non0_non230
107-
#define PL_CCC_non0_non230 (*Perl_GCCC_non0_non230_ptr(NULL))
108102
#undef PL_C_locale_obj
109103
#define PL_C_locale_obj (*Perl_GC_locale_obj_ptr(NULL))
110-
#undef PL_GCB_invlist
111-
#define PL_GCB_invlist (*Perl_GGCB_invlist_ptr(NULL))
112-
#undef PL_HasMultiCharFold
113-
#define PL_HasMultiCharFold (*Perl_GHasMultiCharFold_ptr(NULL))
114-
#undef PL_InBitmap
115-
#define PL_InBitmap (*Perl_GInBitmap_ptr(NULL))
116-
#undef PL_InMultiCharFold
117-
#define PL_InMultiCharFold (*Perl_GInMultiCharFold_ptr(NULL))
118-
#undef PL_LB_invlist
119-
#define PL_LB_invlist (*Perl_GLB_invlist_ptr(NULL))
120-
#undef PL_Latin1
121-
#define PL_Latin1 (*Perl_GLatin1_ptr(NULL))
122-
#undef PL_Posix_ptrs
123-
#define PL_Posix_ptrs (*Perl_GPosix_ptrs_ptr(NULL))
124-
#undef PL_Private_Use
125-
#define PL_Private_Use (*Perl_GPrivate_Use_ptr(NULL))
126-
#undef PL_SB_invlist
127-
#define PL_SB_invlist (*Perl_GSB_invlist_ptr(NULL))
128-
#undef PL_SCX_invlist
129-
#define PL_SCX_invlist (*Perl_GSCX_invlist_ptr(NULL))
130-
#undef PL_UpperLatin1
131-
#define PL_UpperLatin1 (*Perl_GUpperLatin1_ptr(NULL))
132-
#undef PL_WB_invlist
133-
#define PL_WB_invlist (*Perl_GWB_invlist_ptr(NULL))
134-
#undef PL_XPosix_ptrs
135-
#define PL_XPosix_ptrs (*Perl_GXPosix_ptrs_ptr(NULL))
136104
#undef PL_appctx
137105
#define PL_appctx (*Perl_Gappctx_ptr(NULL))
138106
#undef PL_check
@@ -163,8 +131,6 @@ END_EXTERN_C
163131
#define PL_hash_state (*Perl_Ghash_state_ptr(NULL))
164132
#undef PL_hints_mutex
165133
#define PL_hints_mutex (*Perl_Ghints_mutex_ptr(NULL))
166-
#undef PL_in_some_fold
167-
#define PL_in_some_fold (*Perl_Gin_some_fold_ptr(NULL))
168134
#undef PL_keyword_plugin
169135
#define PL_keyword_plugin (*Perl_Gkeyword_plugin_ptr(NULL))
170136
#undef PL_keyword_plugin_mutex
@@ -247,36 +213,8 @@ END_EXTERN_C
247213
#define PL_user_def_props_aTHX (*Perl_Guser_def_props_aTHX_ptr(NULL))
248214
#undef PL_user_prop_mutex
249215
#define PL_user_prop_mutex (*Perl_Guser_prop_mutex_ptr(NULL))
250-
#undef PL_utf8_charname_begin
251-
#define PL_utf8_charname_begin (*Perl_Gutf8_charname_begin_ptr(NULL))
252-
#undef PL_utf8_charname_continue
253-
#define PL_utf8_charname_continue (*Perl_Gutf8_charname_continue_ptr(NULL))
254216
#undef PL_utf8_foldclosures
255217
#define PL_utf8_foldclosures (*Perl_Gutf8_foldclosures_ptr(NULL))
256-
#undef PL_utf8_idcont
257-
#define PL_utf8_idcont (*Perl_Gutf8_idcont_ptr(NULL))
258-
#undef PL_utf8_idstart
259-
#define PL_utf8_idstart (*Perl_Gutf8_idstart_ptr(NULL))
260-
#undef PL_utf8_mark
261-
#define PL_utf8_mark (*Perl_Gutf8_mark_ptr(NULL))
262-
#undef PL_utf8_perl_idcont
263-
#define PL_utf8_perl_idcont (*Perl_Gutf8_perl_idcont_ptr(NULL))
264-
#undef PL_utf8_perl_idstart
265-
#define PL_utf8_perl_idstart (*Perl_Gutf8_perl_idstart_ptr(NULL))
266-
#undef PL_utf8_tofold
267-
#define PL_utf8_tofold (*Perl_Gutf8_tofold_ptr(NULL))
268-
#undef PL_utf8_tolower
269-
#define PL_utf8_tolower (*Perl_Gutf8_tolower_ptr(NULL))
270-
#undef PL_utf8_tosimplefold
271-
#define PL_utf8_tosimplefold (*Perl_Gutf8_tosimplefold_ptr(NULL))
272-
#undef PL_utf8_totitle
273-
#define PL_utf8_totitle (*Perl_Gutf8_totitle_ptr(NULL))
274-
#undef PL_utf8_toupper
275-
#define PL_utf8_toupper (*Perl_Gutf8_toupper_ptr(NULL))
276-
#undef PL_utf8_xidcont
277-
#define PL_utf8_xidcont (*Perl_Gutf8_xidcont_ptr(NULL))
278-
#undef PL_utf8_xidstart
279-
#define PL_utf8_xidstart (*Perl_Gutf8_xidstart_ptr(NULL))
280218
#undef PL_veto_cleanup
281219
#define PL_veto_cleanup (*Perl_Gveto_cleanup_ptr(NULL))
282220
#undef PL_watch_pvx

0 commit comments

Comments
 (0)