]> git.vpit.fr Git - perl/modules/re-engine-Hooks.git/blobdiff - Hooks.xs
Fix infinite recursion with perl 5.17.[12]
[perl/modules/re-engine-Hooks.git] / Hooks.xs
index 10a68daa331d831b1c6df2f6e7afb0bfa0dc6e56..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,13 +158,16 @@ 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
 };
 
-/* --- Private API --------------------------------------------------------- */
+/* --- Internal regexp structure -> hook list inside-out mapping ----------- */
 
 typedef struct {
  size_t            count;
@@ -251,6 +255,8 @@ STATIC void reh_private_map_delete(pTHX_ void *ri) {
  return;
 }
 
+/* --- Private API --------------------------------------------------------- */
+
 void reh_call_comp_begin_hook(pTHX_ regexp *rx) {
  SV *hint = reh_hint();