diff --git a/funcs/func_strings.c b/funcs/func_strings.c index 6aa60ab41bcf3999c47279edcfb0c230a16b0d83..a389eaf4156a993c3ac564024ff4b02b798321da 100644 --- a/funcs/func_strings.c +++ b/funcs/func_strings.c @@ -493,7 +493,7 @@ static int listfilter(struct ast_channel *chan, const char *cmd, char *parse, ch ast_channel_lock(chan); } ast_str_substitute_variables(&orig_list, 0, chan, varsubst); - if (ast_str_strlen(orig_list)) { + if (!ast_str_strlen(orig_list)) { ast_log(LOG_ERROR, "List variable '%s' not found\n", args.listname); if (chan) { ast_channel_unlock(chan); diff --git a/tests/test_substitution.c b/tests/test_substitution.c index b1ffdf64b772f2ef4745a76332b645d4e7466f83..a6e259b810a836dc3b191567ed1c772fbc9200e1 100644 --- a/tests/test_substitution.c +++ b/tests/test_substitution.c @@ -251,6 +251,8 @@ AST_TEST_DEFINE(test_substitution) TEST(test_expected_result(test, c, "A${${baz}o:-1:1}A", "A3A")); TEST(test_expected_result(test, c, "A${${baz}o:-2:1}A", "A2A")); TEST(test_expected_result(test, c, "A${${baz}o:-2:-1}A", "A2A")); + pbx_builtin_setvar_helper(c, "list1", "ab&cd&ef"); + TEST(test_expected_result(test, c, "${LISTFILTER(list1,&,cd)}", "ab&ef")); #undef TEST /* For testing dialplan functions */