On 05/03/2026 18:36, Mia Kanashi wrote:
> @@ -564,7 +576,10 @@ int cfg_eval_condition(char **args, char **err, const char **errptr)
>          }
>
>          ret = cfg_eval_cond_expr(expr, err);
> -        goto done;
> +        if (ret > 0)
> +            goto done;
> +        else
> +            goto fail;
>      }
>
>      /* ret == 0, no other way to parse this */
>

Hmm, actually that if (ret > 0) should probably be if (ret >= 0)
Though errptr is set conditionally anyway...

fail:
    if (errptr)
        *errptr = text;
done:

Maybe how about just removing the fail label?

diff --git a/src/cfgcond.c b/src/cfgcond.c
index 2dc28846e..367e6df83 100644
--- a/src/cfgcond.c
+++ b/src/cfgcond.c
@@ -572,23 +572,19 @@ int cfg_eval_condition(char **args, char **err, const char **errptr)
             ret = -1;
             memprintf(err, "unexpected character '%c' at the end of conditional expression '%s'",
                   *text, args[0]);
-            goto fail;
+            goto done;
         }

         ret = cfg_eval_cond_expr(expr, err);
-        if (ret > 0)
-            goto done;
-        else
-            goto fail;
+        goto done;
     }

     /* ret == 0, no other way to parse this */
     ret = -1;
     memprintf(err, "unparsable conditional expression '%s'", args[0]);
- fail:
+ done:
     if (errptr)
         *errptr = text;
- done:
     cfg_free_cond_expr(expr);
     return ret;
 }


Reply via email to