X = malloc(len);
for (i = 0; i < proceed; i++) {
- if (pcre_get_substring(dtstr, ovector, proceed, i, &replace) > 0) {
- switch_size_t plen = strlen(replace);
- memset(X, 'X', plen);
- *(X+plen) = '\0';
-
- switch_safe_free(substituted);
- substituted = switch_string_replace(substituted ? substituted : dtstr, replace, X);
-
- pcre_free_substring(replace);
+ if (pcre_get_substring(dtstr, ovector, proceed, i, &replace) >= 0) {
+ if (replace) {
+ switch_size_t plen = strlen(replace);
+ memset(X, 'X', plen);
+ *(X+plen) = '\0';
+
+ switch_safe_free(substituted);
+ substituted = switch_string_replace(substituted ? substituted : dtstr, replace, X);
+
+ pcre_free_substring(replace);
+ }
}
}
num = -1;
}
- if (pcre_get_substring(field_data, ovector, match_count, num, &replace) > 0) {
- switch_size_t r;
- for (r = 0; r < strlen(replace) && y < (len - 1); r++) {
- substituted[y++] = replace[r];
+ if (pcre_get_substring(field_data, ovector, match_count, num, &replace) >= 0) {
+ if (replace) {
+ switch_size_t r;
+
+ for (r = 0; r < strlen(replace) && y < (len - 1); r++) {
+ substituted[y++] = replace[r];
+ }
+ pcre_free_substring(replace);
}
- pcre_free_substring(replace);
}
} else {
substituted[y++] = data[x];
int i;
for (i = 0; i < match_count; i++) {
- if (pcre_get_substring(field_data, ovector, match_count, i, &replace) > 0) {
- callback(var, replace, user_data);
- pcre_free_substring(replace);
+ if (pcre_get_substring(field_data, ovector, match_count, i, &replace) >= 0) {
+ if (replace) {
+ callback(var, replace, user_data);
+ pcre_free_substring(replace);
+ }
}
}
}