summaryrefslogtreecommitdiff
path: root/embed.fnc
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2011-12-13 12:00:12 +0000
committerDavid Mitchell <davem@iabyn.com>2012-06-13 13:32:47 +0100
commit3c13cae629d936c43bca9d992cc445d93287af8e (patch)
tree9263b480e25f43e75b0f9a6cfb160579e3588571 /embed.fnc
parent3b16d10d72cd916e1907c4161cc52322040c227a (diff)
downloadperl-3c13cae629d936c43bca9d992cc445d93287af8e.tar.gz
add op_comp field to regexp_engine API
Perl's internal function for compiling regexes that knows about code blocks, Perl_re_op_compile, isn't part of the engine API. However, the way that regcomp.c is dual-lifed as ext/re/re_comp.c with debugging compiled in, means that Perl_re_op_compile is also compiled as my_re_op_compile. These days days the mechanism to choose whether to call the main functions or the debugging my_* functions when 'use re debug' is in scope, is the re engine API jump table. Ergo, to ensure that my_re_op_compile gets called appropriately, this method needs adding to the jump table. So, I've added it, but documented as 'for perl internal use only, set to null in your engine'. I've also updated current_re_engine() to always return a pointer to a jump table, even if we're using the internal engine (formerly it returned null). This then allows us to use the simple condition (eng->op_comp) to determine whether the current engine supports code blocks.
Diffstat (limited to 'embed.fnc')
-rw-r--r--embed.fnc4
1 files changed, 2 insertions, 2 deletions
diff --git a/embed.fnc b/embed.fnc
index fc93e49698..e05af38344 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1056,11 +1056,11 @@ Ap |void |regfree_internal|NN REGEXP *const rx
#if defined(USE_ITHREADS)
Ap |void* |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param
#endif
-p |regexp_engine*|current_re_engine
+EXp |regexp_engine const *|current_re_engine
Ap |REGEXP*|pregcomp |NN SV * const pattern|const U32 flags
p |REGEXP*|re_op_compile |NULLOK SV ** const patternp \
|int pat_count|NULLOK OP *expr \
- |NULLOK const regexp_engine* eng \
+ |NN const regexp_engine* eng \
|NULLOK REGEXP *VOL old_re \
|NULLOK int *is_bare_re \
|U32 rx_flags|U32 pm_flags