proceed = switch_regex_perform(argv[0], argv[1], &re, ovector, sizeof(ovector) / sizeof(ovector[0]));
if (argc > 2) {
- len = (strlen(argv[0]) + strlen(argv[2]) + 10) * proceed;
- substituted = malloc(len);
- switch_assert(substituted);
- memset(substituted, 0, len);
- switch_replace_char(argv[2], '%', '$', SWITCH_FALSE);
- switch_perform_substitution(re, proceed, argv[2], argv[0], substituted, len, ovector);
-
- stream->write_function(stream, "%s", substituted);
- free(substituted);
+ if (proceed) {
+ len = (strlen(argv[0]) + strlen(argv[2]) + 10) * proceed;
+ substituted = malloc(len);
+ switch_assert(substituted);
+ memset(substituted, 0, len);
+ switch_replace_char(argv[2], '%', '$', SWITCH_FALSE);
+ switch_perform_substitution(re, proceed, argv[2], argv[0], substituted, len, ovector);
+
+ stream->write_function(stream, "%s", substituted);
+ free(substituted);
+ } else {
+ stream->write_function(stream, "%s", argv[0]);
+ }
} else {
stream->write_function(stream, proceed ? "true" : "false");
}