]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4675 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 2 Oct 2012 16:56:21 +0000 (11:56 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Tue, 2 Oct 2012 16:56:31 +0000 (11:56 -0500)
src/mod/applications/mod_commands/mod_commands.c

index d823af7194d03a03e45b0d124195da7d10d29802..892d6e7479563df8e2b61c6b65659a97e641653c 100644 (file)
@@ -1563,15 +1563,19 @@ SWITCH_STANDARD_API(regex_function)
        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");
        }