]> git.vpit.fr Git - perl/modules/re-engine-Hooks.git/commitdiff
Fix infinite recursion with perl 5.17.[12]
authorVincent Pit <vince@profvince.com>
Sun, 23 Sep 2012 20:56:09 +0000 (22:56 +0200)
committerVincent Pit <vince@profvince.com>
Mon, 24 Sep 2012 09:54:01 +0000 (11:54 +0200)
This is solved by setting the new op_comp member of the regexp engine
struct. We also replace PL_core_reg_engine by our own regexp engine.

47 files changed:
Hooks.xs
re_defs.h
src/5010001/regcomp.c
src/5011000/regcomp.c
src/5011001/regcomp.c
src/5011002/regcomp.c
src/5011003/regcomp.c
src/5011004/regcomp.c
src/5011005/regcomp.c
src/5012000/regcomp.c
src/5012001/regcomp.c
src/5012002/regcomp.c
src/5012003/regcomp.c
src/5012004/regcomp.c
src/5013000/regcomp.c
src/5013001/regcomp.c
src/5013002/regcomp.c
src/5013003/regcomp.c
src/5013004/regcomp.c
src/5013005/regcomp.c
src/5013006/regcomp.c
src/5013007/regcomp.c
src/5013008/regcomp.c
src/5013009/regcomp.c
src/5013010/regcomp.c
src/5013011/regcomp.c
src/5014000/regcomp.c
src/5014001/regcomp.c
src/5014002/regcomp.c
src/5015000/regcomp.c
src/5015001/regcomp.c
src/5015002/regcomp.c
src/5015003/regcomp.c
src/5015004/regcomp.c
src/5015005/regcomp.c
src/5015006/regcomp.c
src/5015007/regcomp.c
src/5015008/regcomp.c
src/5015009/regcomp.c
src/5016000/regcomp.c
src/5016001/regcomp.c
src/5017000/regcomp.c
src/5017001/regcomp.c
src/5017002/regcomp.c
src/5017003/regcomp.c
src/5017004/regcomp.c
src/update.pl

index 99e81d303a358a01e8ff89e046efdbe0b6eed091..0320d2abaa9b5e2a42f70c56f826d52a10981f80 100644 (file)
--- a/Hooks.xs
+++ b/Hooks.xs
@@ -143,8 +143,9 @@ EXTERN_C SV *    reh_reg_qr_package(pTHX_ REGEXP * const);
 EXTERN_C void *  reh_regdupe(pTHX_ REGEXP * const, CLONE_PARAMS *);
 EXTERN_C void *  reh_re_dupe(pTHX_ REGEXP * const, CLONE_PARAMS *);
 #endif
-
-EXTERN_C const struct regexp_engine reh_regexp_engine;
+#if REH_HAS_PERL(5, 17, 1)
+EXTERN_C REGEXP *reh_op_compile(pTHX_ SV ** const patternp, int pat_count, OP *expr, const regexp_engine* eng, REGEXP *VOL old_re, bool *is_bare_re, U32 orig_rx_flags, U32 pm_flags);
+#endif
 
 const struct regexp_engine reh_regexp_engine = {
  reh_regcomp,
@@ -157,9 +158,12 @@ const struct regexp_engine reh_regexp_engine = {
  reh_reg_numbered_buff_length,
  reh_reg_named_buff,
  reh_reg_named_buff_iter,
- reh_reg_qr_package,
+ reh_reg_qr_package
 #if defined(USE_ITHREADS)
- reh_re_dupe
+ , reh_re_dupe
+#endif
+#if REH_HAS_PERL(5, 17, 1)
+ , reh_op_compile
 #endif
 };
 
index cf2eb14c582ba7ad5220ae7102284ce01e12b311..d51eeb8b9db73fbd2642eaf2f54cb4e65b0337e9 100644 (file)
--- a/re_defs.h
+++ b/re_defs.h
@@ -1,3 +1,5 @@
+EXTERN_C const struct regexp_engine reh_regexp_engine;
+
 EXTERN_C void reh_call_comp_begin_hook(pTHX_ regexp *);
 EXTERN_C void reh_call_comp_node_hook(pTHX_ regexp *, regnode *);
 EXTERN_C void reh_call_exec_node_hook(pTHX_ regexp *, regnode *, regmatch_info *, regmatch_state *);
index d6bfde6befdf633ce8e59fd71f9421fe7d96673f..f8d359112d4a6b37887bf8758a9b90ba25492445 100644 (file)
@@ -4161,7 +4161,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index b17c71b290713d9d7878d28ec12b56fbcecd9e0d..53c8ba1b57f58721ce2052e5c8a686af0d4bf431 100644 (file)
@@ -4163,7 +4163,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index b68a456263e03922c3daf038312cab58f3dfcd2c..0e3f8a0449cbbfd4814d8414b983c7b15e38ebb5 100644 (file)
@@ -4173,7 +4173,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 683a7c4d23b8d0b59b73f877a03f38a03b8797a9..3e7be4302753e3bd68d958245d108bf4b4b4a64d 100644 (file)
@@ -4178,7 +4178,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 1f9c84f10bf07247c79a0cd4c0ec148f208d7309..bffbdc11ded792524cebdf6f36ebc09ffe9f1d22 100644 (file)
@@ -4178,7 +4178,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 1f9c84f10bf07247c79a0cd4c0ec148f208d7309..bffbdc11ded792524cebdf6f36ebc09ffe9f1d22 100644 (file)
@@ -4178,7 +4178,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index fa4caf6bf82030584b49ad1ed8d8d06f21f4ceb4..8805b2fe85d46a8e22469af714915af239d6e6ce 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 10538490f9c77c8a8df8d84fba89157663ea341c..3dfd2df5ab62752f70d99c08ef706094f3a7227c 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2d4110b0f359587f560e163c43340cdb6c22fc5a..051dac6fc2dbc0128a36e5e51deb2c273dc065f7 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2d4110b0f359587f560e163c43340cdb6c22fc5a..051dac6fc2dbc0128a36e5e51deb2c273dc065f7 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2d4110b0f359587f560e163c43340cdb6c22fc5a..051dac6fc2dbc0128a36e5e51deb2c273dc065f7 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2d4110b0f359587f560e163c43340cdb6c22fc5a..051dac6fc2dbc0128a36e5e51deb2c273dc065f7 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 10538490f9c77c8a8df8d84fba89157663ea341c..3dfd2df5ab62752f70d99c08ef706094f3a7227c 100644 (file)
@@ -4176,7 +4176,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 7b11f74450128212d642c304805a617594abe01f..71efa0aa33f3a8a6bcc5c4c3d6acf1ee058ef5ad 100644 (file)
@@ -4224,7 +4224,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 92917f7e35b084284e86f57a515601093910c156..799b2272f37a9921d83ed995c2057daa65679ea5 100644 (file)
@@ -4224,7 +4224,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 4c601235d711e0ad93cb2d268a94e32430a22ffa..bfde505b9e2160cc68dfabc3a790c53e8eafc3c7 100644 (file)
@@ -4224,7 +4224,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 34b718818bfeb8ca820d03d7e8dc6e10ab044307..64ca204d7ba677e87d36e76c96ffe71a4924c14d 100644 (file)
@@ -4222,7 +4222,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index cd00b96f967bb358b47ee8d3432ef5782c9d7956..d495af600d3e18dd54ab3c32a1209f99ef6d66a7 100644 (file)
@@ -4230,7 +4230,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index ed96849d871048d3d3e652adc414e1ef9c48e949..f6a25245ebc55ebbab514fec7621512e0114801c 100644 (file)
@@ -4296,7 +4296,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2c9c9535cec986583615a3e86cf7304db63a376a..102c6614425b94939c06d2913f282a93261a2ee3 100644 (file)
@@ -4309,7 +4309,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 794a89c4bc81739422f7ef5164a39606f8ab3b46..220dd02c0b13d324bdb65e53d5d5477b589e2120 100644 (file)
@@ -4347,7 +4347,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 835cfd51cc35fd79d1acbea52544f161b7929f38..7ff1f08154035cdf1bbed6aca4cfcc30e9353019 100644 (file)
@@ -4322,7 +4322,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index cef1124da7e6a0830303275ecd73c7c8a6429413..2c5e879343ec7ce30c6e8b77bba47c824ca046ee 100644 (file)
@@ -4359,7 +4359,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 53d4a40797c5104c88f8d5b21258b9736ab17313..310bb6a371127959bcca575a36df37e8b37990fd 100644 (file)
@@ -4461,7 +4461,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 36f88ade82f4225a320dbfae0705d1084fecd7ad..88aed26d19f8f990301e91e8042b57b91ae3364b 100644 (file)
@@ -4486,7 +4486,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index a5ac553b5924a8ddfb74efef1be719fbadaf2e44..71d0e336a78c2eccf513294d4019e99647f45a9d 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index a5ac553b5924a8ddfb74efef1be719fbadaf2e44..71d0e336a78c2eccf513294d4019e99647f45a9d 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 382b1e1f1ea3dec1a88b36674f89e33095890b67..2fdc923573b67539ea6500f9eb1bef5ccc08a4ac 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 9ca75cb40f9ee32ba17e04ed0ac0cd49835c4c02..fc1ddb37ac15c9bfdf4e326a06fb5fa2706aa2f7 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 4ada8ebe8ec6aa9d35788e9022de96c808fa8fd5..9da1ca90f85e7b7e72a6d2729bcf56a36b8d39af 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 4ada8ebe8ec6aa9d35788e9022de96c808fa8fd5..9da1ca90f85e7b7e72a6d2729bcf56a36b8d39af 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 1e762f94ab27a3460da8edcae4115ec146ed73aa..d3b7a58903bf5f8d3f4c33e727ced8a6162ea769 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 3e4ca3331da39a4b0a3c620c4724f3a6e1fc95d4..304e9a010c7998105e4f23d626c148a047a0fb8e 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index a2441456f9a6fb02d6b100ace3932bddcf23511c..03cf08ad66d4d7b012b3003f5515f077133b39e3 100644 (file)
@@ -4483,7 +4483,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 6a0b96df3ead63cb19efd7ac7e867d87d45b1e1f..e27213c289fa53a88911e5ae76529ee3934fcde0 100644 (file)
@@ -4743,7 +4743,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index a16bf690a71e6eeb7ea0a393e6a53c5237008712..1737ba41a7ee9b3691f4724baf30e1ebe48ed3a5 100644 (file)
@@ -4746,7 +4746,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 59c12e0e03fd248f77c3c561b7ff0ac72d6444c5..abeb9daf561be25aebc69a9431a123829e8743ad 100644 (file)
@@ -4830,7 +4830,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2b80f680dc2e13703e63b34055c78025aabe73af..f76c11b9a6e01ca739dac208e2b3e9052f49685f 100644 (file)
@@ -4830,7 +4830,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2b80f680dc2e13703e63b34055c78025aabe73af..f76c11b9a6e01ca739dac208e2b3e9052f49685f 100644 (file)
@@ -4830,7 +4830,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index 2fc6645454bcfb6a0c111644ffebe2f749b2bb8d..76447998b72d3dd3e82de2ad4bcf9d5ea1d1d391 100644 (file)
@@ -4833,7 +4833,7 @@ Perl_reginitcolors(pTHX)
 
 
 #ifndef PERL_IN_XSUB_RE
-#define RE_ENGINE_PTR &PL_core_reg_engine
+#define RE_ENGINE_PTR &reh_regexp_engine
 #else
 extern const struct regexp_engine my_reg_engine;
 #define RE_ENGINE_PTR &my_reg_engine
index bfc83be89eb55921d11a2b5bc0d6aef8fc5e30d1..d61977ebb31ff044cefa4bee9c90582711519513 100644 (file)
@@ -4914,19 +4914,19 @@ Perl_current_re_engine(pTHX)
        SV **ptr;
 
        if (!table)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = hv_fetchs(table, "regcomp", FALSE);
        if ( !(ptr && SvIOK(*ptr) && SvIV(*ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(*ptr));
     }
     else {
        SV *ptr;
        if (!PL_curcop->cop_hints_hash)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = cop_hints_fetch_pvs(PL_curcop, "regcomp", 0);
        if ( !(ptr && SvIOK(ptr) && SvIV(ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(ptr));
     }
 }
index 5edf0fd05cd5649c61693a0b4cc3c8c42020a270..aa43f81e283e931cf46e78860e3892a8df22a5a8 100644 (file)
@@ -4922,19 +4922,19 @@ Perl_current_re_engine(pTHX)
        SV **ptr;
 
        if (!table)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = hv_fetchs(table, "regcomp", FALSE);
        if ( !(ptr && SvIOK(*ptr) && SvIV(*ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(*ptr));
     }
     else {
        SV *ptr;
        if (!PL_curcop->cop_hints_hash)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = cop_hints_fetch_pvs(PL_curcop, "regcomp", 0);
        if ( !(ptr && SvIOK(ptr) && SvIV(ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(ptr));
     }
 }
index 0ffc3a2e8c295e83644d658e895f23fb7cedbdef..113e94394a3838c8fb28c6d45fc3b03ae1058a31 100644 (file)
@@ -4929,19 +4929,19 @@ Perl_current_re_engine(pTHX)
        SV **ptr;
 
        if (!table)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = hv_fetchs(table, "regcomp", FALSE);
        if ( !(ptr && SvIOK(*ptr) && SvIV(*ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(*ptr));
     }
     else {
        SV *ptr;
        if (!PL_curcop->cop_hints_hash)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = cop_hints_fetch_pvs(PL_curcop, "regcomp", 0);
        if ( !(ptr && SvIOK(ptr) && SvIV(ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(ptr));
     }
 }
@@ -4979,7 +4979,7 @@ Perl_re_compile(pTHX_ SV * const pattern, U32 rx_flags)
 #ifdef PERL_IN_XSUB_RE
                                 &my_reg_engine,
 #else
-                                &PL_core_reg_engine,
+                                &reh_regexp_engine,
 #endif
                                 NULL, NULL, rx_flags, 0);
 }
index 4049b40ba988ee685ac3cedc9cdb34c123246f72..217f8fe2b6667612932473d012fa588d5dc82adb 100644 (file)
@@ -4928,19 +4928,19 @@ Perl_current_re_engine(pTHX)
        SV **ptr;
 
        if (!table)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = hv_fetchs(table, "regcomp", FALSE);
        if ( !(ptr && SvIOK(*ptr) && SvIV(*ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(*ptr));
     }
     else {
        SV *ptr;
        if (!PL_curcop->cop_hints_hash)
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        ptr = cop_hints_fetch_pvs(PL_curcop, "regcomp", 0);
        if ( !(ptr && SvIOK(ptr) && SvIV(ptr)))
-           return &PL_core_reg_engine;
+           return &reh_regexp_engine;
        return INT2PTR(regexp_engine*,SvIV(ptr));
     }
 }
@@ -4978,7 +4978,7 @@ Perl_re_compile(pTHX_ SV * const pattern, U32 rx_flags)
 #ifdef PERL_IN_XSUB_RE
                                 &my_reg_engine,
 #else
-                                &PL_core_reg_engine,
+                                &reh_regexp_engine,
 #endif
                                 NULL, NULL, rx_flags, 0);
 }
index 97a60b6794d6f93f9142ea1108bc5b67ccd1b2da..e7fe628cf087fd93efb56a05bb5be044ec1e9263 100644 (file)
@@ -246,6 +246,9 @@ sub patch_regcomp {
  } elsif ($line =~ /end node insert/) {
   push @{$patched_chunks{$file}}, 'COMP_NODE_HOOK';
   return $line, "    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);\n";
+ } elsif ($line =~ /&PL_core_reg_engine/) {
+  $line =~ s/&PL_core_reg_engine\b/&reh_regexp_engine/g;
+  return $line;
  }
 
  return $line;