From 82697714e1b51968dc852c9194deb2e0bf159596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Mon, 8 Oct 2018 22:51:08 +0200 Subject: core: fix evaluation of nested ternary operators (closes #1263) --- src/core/wee-eval.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/core/wee-eval.c b/src/core/wee-eval.c index b9a092a65..9ba2dd9d2 100644 --- a/src/core/wee-eval.c +++ b/src/core/wee-eval.c @@ -317,7 +317,8 @@ eval_replace_vars_cb (void *data, const char *text) struct t_config_option *ptr_option; struct t_gui_buffer *ptr_buffer; char str_value[512], *value, *pos, *pos1, *pos2, *hdata_name, *list_name; - char *tmp, *info_name, *hide_char, *hidden_string, *error, *condition; + char *tmp, *tmp2, *info_name, *hide_char, *hidden_string, *error; + char *condition; const char *ptr_value, *ptr_arguments, *ptr_string; struct t_hdata *hdata; void *pointer; @@ -556,10 +557,13 @@ eval_replace_vars_cb (void *data, const char *text) strndup (text + 3, pos - (text + 3)) : strdup (text + 3); if (!condition) return strdup (""); - tmp = eval_expression_condition (condition, eval_context); - rc = eval_is_true (tmp); + tmp = eval_replace_vars (condition, eval_context); + tmp2 = eval_expression_condition ((tmp) ? tmp : "", eval_context); + rc = eval_is_true (tmp2); if (tmp) free (tmp); + if (tmp2) + free (tmp2); if (rc) { /* -- cgit v1.2.3