X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fre-engine-Hooks.git;a=blobdiff_plain;f=src%2Fupdate.pl;fp=src%2Fupdate.pl;h=1b5834e3045c6544635e9f71aec363a6c97949b9;hp=e62b78e2b8309381a1fe1351af229cd45dca786d;hb=db28a7ef5e55803a8c143a0ff4ddd9aca56438d7;hpb=fe5c260b357f1011dff1c4fdf91dc1811675cca9 diff --git a/src/update.pl b/src/update.pl index e62b78e..1b5834e 100644 --- a/src/update.pl +++ b/src/update.pl @@ -300,13 +300,14 @@ sub fetch_source_file { my %patched_chunks; my %expected_chunks = ( 'regcomp.c' => [ + 'PERL_IN_XSUB_RE', 're_defs', 'COMP_NODE_HOOK', 'COMP_BEGIN_HOOK', ('COMP_NODE_HOOK') x 3, ], 'regexec.c' => [ - 're_defs', + 'PERL_IN_XSUB_RE+re_defs', 'EXEC_NODE_HOOK', ], ); @@ -314,7 +315,15 @@ my %expected_chunks = ( sub patch_regcomp { my ($line, $file) = @_; - if ($line =~ /#\s*include\s+"INTERN\.h"/) { + if ($line =~ /#\s*include\s+"perl\.h"/) { + push @{$patched_chunks{$file}}, 'PERL_IN_XSUB_RE'; + return ( + "#undef PERL_IN_XSUB_RE\n", + "#define PERL_IN_XSUB_RE 1\n", + $line, + "#undef PERL_IN_XSUB_RE\n", + ); + } elsif ($line =~ /#\s*include\s+"INTERN\.h"/) { push @{$patched_chunks{$file}}, 're_defs'; return "#include \"re_defs.h\"\n"; } elsif ($line =~ /^(\s*)RExC_rxi\s*=\s*ri\s*;\s*$/) { @@ -339,8 +348,14 @@ sub patch_regexec { my ($line, $file) = @_; if ($line =~ /#\s*include\s+"perl\.h"/) { - push @{$patched_chunks{$file}}, 're_defs'; - return $line, "#include \"re_defs.h\"\n"; + push @{$patched_chunks{$file}}, 'PERL_IN_XSUB_RE+re_defs'; + return ( + "#undef PERL_IN_XSUB_RE\n", + "#define PERL_IN_XSUB_RE 1\n", + $line, + "#include \"re_defs.h\"\n", + "#undef PERL_IN_XSUB_RE\n", + ); } elsif ($line =~ /^\s*reenter_switch:\s*$/) { push @{$patched_chunks{$file}}, 'EXEC_NODE_HOOK'; return "\tREH_CALL_EXEC_NODE_HOOK(rex, scan, reginfo, st);\n", $line;