]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix offset in regex expansion
authorBrian West <brian@freeswitch.org>
Mon, 10 Dec 2007 16:27:48 +0000 (16:27 +0000)
committerBrian West <brian@freeswitch.org>
Mon, 10 Dec 2007 16:27:48 +0000 (16:27 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6588 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_regex.c

index d613cda16af4100cdb4e98017512fdbb41fae035..c2d595a22aa541ba0a81ab3f3276a241ae4624f3 100644 (file)
@@ -109,6 +109,7 @@ SWITCH_DECLARE(int) switch_regex_perform(const char *field, const char *expressi
                                                        ovector,        /* vector of integers for substring information */
                                                        olen);  /* number of elements (NOT size in bytes) */
 
+
        if (match_count <= 0) {
                switch_regex_safe_free(re);
                match_count = 0;
@@ -145,7 +146,12 @@ SWITCH_DECLARE(void) switch_perform_substitution(switch_regex_t *re, int match_c
                        }
                        index[z++] = '\0';
                        z = 0;
-                       num = atoi(index);
+                       if (match_count > 1) {
+                               int offset = match_count - 2;
+                               num = atoi(index) + offset;
+                       } else {
+                               num = atoi(index);
+                       }
 
                        if (pcre_copy_substring(field_data, ovector, match_count, num, replace, sizeof(replace)) > 0) {
                                switch_size_t r;