diff --git a/main/say.c b/main/say.c
index ebbb9f0f1ab9a6e613c2e78d0378f7cbfebb3b95..df9462aa16448a0c3e80fd1e531a81f850420315 100644
--- a/main/say.c
+++ b/main/say.c
@@ -180,6 +180,13 @@ static int say_filenames(struct ast_channel *chan, const char *ints, const char
 	if (!filenames) {
 		return -1;
 	}
+
+	/* No filenames to play? Return success so we don't hang up erroneously */
+	if (ast_str_strlen(filenames) == 0) {
+		ast_free(filenames);
+		return 0;
+	}
+
 	files = ast_str_buffer(filenames);
 
 	while ((fn = strsep(&files, "&"))) {