[Asterisk-code-review] say: Don't prepend ampersand erroneously. (asterisk[16.30])

George Joseph asteriskteam at digium.com
Wed Jan 4 06:38:25 CST 2023


George Joseph has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/19813 )

Change subject: say: Don't prepend ampersand erroneously.
......................................................................

say: Don't prepend ampersand erroneously.

Some logic in say.c for determining if we need
to also add an ampersand for file seperation was faulty,
as non-successful files would increment the count, causing
a leading ampersand to be added improperly.

This is fixed, and a unit test that captures this regression
is also added.

ASTERISK-30248 #close

Change-Id: I02c1d3a11d82fe4ea8b462070cbd1effb5834d2b
(cherry picked from commit bf6194be45acb277cd69e6236050c77880ccb2af)
---
M funcs/func_sayfiles.c
M main/say.c
2 files changed, 32 insertions(+), 3 deletions(-)

Approvals:
  George Joseph: Looks good to me, approved; Approved for Submit




diff --git a/funcs/func_sayfiles.c b/funcs/func_sayfiles.c
index d3f3341..7e0ece2 100644
--- a/funcs/func_sayfiles.c
+++ b/funcs/func_sayfiles.c
@@ -211,6 +211,15 @@
 		res = AST_TEST_FAIL;
 	}
 
+	/* + should be ignored and there should not be a leading & */
+	ast_str_set(&expr, 0, "${SAYFILES(+18005551212,digits)}");
+	ast_str_substitute_variables(&result, 0, NULL, ast_str_buffer(expr));
+	if (strcmp(ast_str_buffer(result), "digits/1&digits/8&digits/0&digits/0&digits/5&digits/5&digits/5&digits/1&digits/2&digits/1&digits/2") != 0) {
+		ast_test_status_update(test, "SAYFILES(+18005551212,digits) test failed ('%s')\n",
+				ast_str_buffer(result));
+		res = AST_TEST_FAIL;
+	}
+
 	ast_str_set(&expr, 0, "${SAYFILES(35,number)}");
 	ast_str_substitute_variables(&result, 0, NULL, ast_str_buffer(expr));
 	if (strcmp(ast_str_buffer(result), "digits/30&digits/5") != 0) {
diff --git a/main/say.c b/main/say.c
index 28fe944..16e5c14 100644
--- a/main/say.c
+++ b/main/say.c
@@ -160,7 +160,7 @@
 		}
 		if ((fn && ast_fileexists(fn, NULL, lang) > 0) ||
 			(snprintf(asciibuf + 13, sizeof(asciibuf) - 13, "%d", str[num]) > 0 && ast_fileexists(asciibuf, NULL, lang) > 0 && (fn = asciibuf))) {
-			ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
+			ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
 		}
 		if (upper || lower) {
 			continue;
@@ -282,7 +282,7 @@
 			fn = fnbuf;
 		}
 		if (fn && ast_fileexists(fn, NULL, lang) > 0) {
-			ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
+			ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
 		}
 		num++;
 	}
@@ -336,7 +336,7 @@
 			break;
 		}
 		if (fn && ast_fileexists(fn, NULL, lang) > 0) {
-			ast_str_append(&filenames, 0, (num == 0 ? "%s" : "&%s"), fn);
+			ast_str_append(&filenames, 0, "%s%s", ast_str_strlen(filenames) ? "&" : "", fn);
 		}
 		num++;
 	}

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/19813
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 16.30
Gerrit-Change-Id: I02c1d3a11d82fe4ea8b462070cbd1effb5834d2b
Gerrit-Change-Number: 19813
Gerrit-PatchSet: 2
Gerrit-Owner: Joshua Colp <jcolp at sangoma.com>
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-CC: N A <asterisk at phreaknet.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20230104/e7392a75/attachment-0001.html>


More information about the asterisk-code-review mailing list