details: https://hg.nginx.org/njs/rev/4a0f6ff54f88 branches: changeset: 1024:4a0f6ff54f88 user: Valentin Bartenev <vb...@nginx.com> date: Mon Jul 01 22:44:14 2019 +0300 description: Reduced nesting level of branches in njs_string_replace_regexp().
No functional changes. diffstat: njs/njs_string.c | 163 +++++++++++++++++++++++++++--------------------------- 1 files changed, 82 insertions(+), 81 deletions(-) diffs (181 lines): diff -r 7a8584306099 -r 4a0f6ff54f88 njs/njs_string.c --- a/njs/njs_string.c Tue Jun 18 15:02:57 2019 +0000 +++ b/njs/njs_string.c Mon Jul 01 22:44:14 2019 +0300 @@ -3092,95 +3092,96 @@ njs_string_replace_regexp(njs_vm_t *vm, r->part[0].start, r->part[0].size, r->match_data); - if (ret >= 0) { - captures = nxt_regex_captures(r->match_data); - - if (r->substitutions != NULL) { - ret = njs_string_replace_substitute(vm, r, captures); - if (nxt_slow_path(ret != NXT_OK)) { - return ret; - } - - if (!pattern->global) { - return njs_string_replace_regexp_join(vm, r); - } + if (ret < 0) { + if (nxt_slow_path(ret != NXT_REGEX_NOMATCH)) { + return NXT_ERROR; + } + + break; + } + + captures = nxt_regex_captures(r->match_data); + + if (r->substitutions != NULL) { + ret = njs_string_replace_substitute(vm, r, captures); + if (nxt_slow_path(ret != NXT_OK)) { + return ret; + } + + if (!pattern->global) { + return njs_string_replace_regexp_join(vm, r); + } + + continue; + } + + if (r->part != r->parts.start) { + r->part = nxt_array_add(&r->parts, &njs_array_mem_proto, + vm->mem_pool); + if (nxt_slow_path(r->part == NULL)) { + return NXT_ERROR; + } + + r->part = nxt_array_add(&r->parts, &njs_array_mem_proto, + vm->mem_pool); + if (nxt_slow_path(r->part == NULL)) { + return NXT_ERROR; + } + + r->part -= 2; + } + + if (captures[1] == 0) { + + /* Empty match. */ + + start = r->part[0].start; + + if (start < end) { + p = (u_char *) nxt_utf8_next(start, end); + + r->part[1].start = start; + r->part[1].size = p - start; + + r->part[2].start = p; + r->part[2].size = end - p; } else { - if (r->part != r->parts.start) { - r->part = nxt_array_add(&r->parts, &njs_array_mem_proto, - vm->mem_pool); - if (nxt_slow_path(r->part == NULL)) { - return NXT_ERROR; - } - - r->part = nxt_array_add(&r->parts, &njs_array_mem_proto, - vm->mem_pool); - if (nxt_slow_path(r->part == NULL)) { - return NXT_ERROR; - } - - r->part -= 2; - } - - if (captures[1] == 0) { - - /* Empty match. */ - - start = r->part[0].start; - - if (start < end) { - p = (u_char *) nxt_utf8_next(start, end); - - r->part[1].start = start; - r->part[1].size = p - start; - - r->part[2].start = p; - r->part[2].size = end - p; - - } else { - r->part[1].size = 0; - r->part[2].size = 0; - - /* To exit the loop. */ - r->part[2].start = start + 1; - } - - if (r->function != NULL) { - return njs_string_replace_regexp_function(vm, args, r, - captures, ret); - } - - r->part[0] = replace; - - } else { - r->part[2].start = r->part[0].start + captures[1]; - r->part[2].size = r->part[0].size - captures[1]; - njs_set_invalid(&r->part[2].value); - - if (r->function != NULL) { - return njs_string_replace_regexp_function(vm, args, r, - captures, ret); - } - - r->part[0].size = captures[0]; - - r->part[1] = replace; - } - - if (!pattern->global) { - return njs_string_replace_regexp_join(vm, r); - } - - r->part += 2; + r->part[1].size = 0; + r->part[2].size = 0; + + /* To exit the loop. */ + r->part[2].start = start + 1; } - } else if (ret == NXT_REGEX_NOMATCH) { - break; + if (r->function != NULL) { + return njs_string_replace_regexp_function(vm, args, r, + captures, ret); + } + + r->part[0] = replace; } else { - return NXT_ERROR; + r->part[2].start = r->part[0].start + captures[1]; + r->part[2].size = r->part[0].size - captures[1]; + njs_set_invalid(&r->part[2].value); + + if (r->function != NULL) { + return njs_string_replace_regexp_function(vm, args, r, + captures, ret); + } + + r->part[0].size = captures[0]; + + r->part[1] = replace; } + if (!pattern->global) { + return njs_string_replace_regexp_join(vm, r); + } + + r->part += 2; + } while (r->part[0].start <= end); if (r->part != r->parts.start) { _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel