diff options
Diffstat (limited to 'plugin/business/pangu-http/src/pattern_replace.cpp')
| -rw-r--r-- | plugin/business/pangu-http/src/pattern_replace.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/plugin/business/pangu-http/src/pattern_replace.cpp b/plugin/business/pangu-http/src/pattern_replace.cpp index 95e3fed..667bae3 100644 --- a/plugin/business/pangu-http/src/pattern_replace.cpp +++ b/plugin/business/pangu-http/src/pattern_replace.cpp @@ -192,15 +192,15 @@ size_t replace_string(const char * in, size_t in_sz, const struct replace_rule * { assert(strlen(zone->find) != 0); - int error; - PCRE2_SIZE erroffset; + int error=0; + PCRE2_SIZE erroffset=0; const PCRE2_SPTR pattern = (PCRE2_SPTR)zone->find; const PCRE2_SPTR subject = (PCRE2_SPTR)in; const PCRE2_SPTR replacement = (PCRE2_SPTR)zone->replace_with; - pcre2_code *re = pcre2_compile(pattern, PCRE2_ZERO_TERMINATED, 0, &error, &erroffset, 0); - if (re == 0) + pcre2_code *re = pcre2_compile(pattern, strlen(zone->find), PCRE2_UTF, &error, &erroffset, 0); + if (!re) return -1; pcre2_jit_compile(re, PCRE2_JIT_COMPLETE); @@ -211,7 +211,11 @@ size_t replace_string(const char * in, size_t in_sz, const struct replace_rule * not_enough_mem_retry: out_buffer = (PCRE2_UCHAR*)malloc(sizeof(PCRE2_UCHAR)*outbuff_size); outlen = outbuff_size; - int rc = pcre2_substitute(re, subject, in_sz, 0, PCRE2_SUBSTITUTE_GLOBAL | PCRE2_SUBSTITUTE_EXTENDED | PCRE2_SUBSTITUTE_OVERFLOW_LENGTH, 0, 0, replacement, PCRE2_ZERO_TERMINATED, out_buffer, &outlen); + int rc = pcre2_substitute(re, subject, in_sz, 0, + PCRE2_SUBSTITUTE_GLOBAL | PCRE2_SUBSTITUTE_EXTENDED | PCRE2_SUBSTITUTE_OVERFLOW_LENGTH, + 0, 0, //pcre2_match_data *match_data, pcre2_match_context + replacement, strlen(zone->replace_with), + out_buffer, &outlen); if(outlen>outbuff_size) { outbuff_size=outlen; |
