It's amazing what writing a test will find.
authorTilghman Lesher <tilghman@meg.abyt.es>
Wed, 10 Mar 2010 20:30:34 +0000 (20:30 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Wed, 10 Mar 2010 20:30:34 +0000 (20:30 +0000)
(issue #16900)
 Reported by: bluecrow76

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@251677 65c4cc65-6c06-0410-ace0-fbb531ad65f3

funcs/func_strings.c
tests/test_substitution.c

index 6aa60ab..a389eaf 100644 (file)
@@ -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);
index b1ffdf6..a6e259b 100644 (file)
@@ -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 */