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;
}