[asterisk-bugs] [JIRA] (ASTERISK-30243) func_logic: IF function complains if both branches are empty

Joshua C. Colp (JIRA) noreply at issues.asterisk.org
Thu Sep 22 04:07:09 CDT 2022


     [ https://issues.asterisk.org/jira/browse/ASTERISK-30243?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on ASTERISK-30243 started by N A.

> func_logic: IF function complains if both branches are empty
> ------------------------------------------------------------
>
>                 Key: ASTERISK-30243
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-30243
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Functions/func_logic
>    Affects Versions: 18.14.0
>            Reporter: N A
>            Assignee: N A
>
> The IF function complains if both branches (true and false) are empty, e.g.:
> {noformat}
> [2022-09-21 22:45:01] WARNING[27353][C-00000275]: func_logic.c:190 acf_if: Syntax IF(<expr>?[<true>][:<false>])  (expr must be non-null, and either <true> or <false> must be non-null)
> [2022-09-21 22:45:01] WARNING[27353][C-00000275]: func_logic.c:191 acf_if:       In this case, <expr>='1', <true>='(null)', and <false>='(null)'
> {noformat}
> However, there is no actual rationale for this. It is not incorrect to have both empty branches, as it's not necessarily wrong for the IF() function to resolve to nothing (empty string). This happens often in my case and this is the correct/desired behavior. Everything works correctly: except warnings are thrown for no reason.
> For example:
> {noformat}
> ${IF(${EXISTS(${ARG3}?${ARG3}:${foobar})})}
> {noformat}
> The logic here is simple: if an ARG3 is provided, use ARG3. Otherwise, use the variable foobar instead.
> In many cases, both ARG3 and foobar could be empty. So much of the time, the whole function could evaluate to an empty string. Using the EXISTS and ISNULL function don't help, since the contents will still evaluate as empty and thus IF will complain, even though this is correct and intentional.
> This has been a problem for years, I just haven't bothered to report it until now, but at this point it's one of the most common false alarms in my error log.
> Unlike other conditional applications, e.g. GotoIf, there is no inherent reason that the contents of an IF() call cannot all be empty. Accordingly, these WARNINGs are changed to debug messages, since nothing is actually wrong.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list