From 34676d2f7eb91fe93c834c54d04ef351b6ded4e1 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Fri, 1 Dec 2017 14:53:46 +0200 Subject: [PATCH] lib: Support nested keys in var_get_key_range_full Fixes problems with %{if...} failed: if: requires four or five parameters, got 1 --- src/lib/var-expand.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/var-expand.c b/src/lib/var-expand.c index 2ed06bb3a9..c374014a0c 100644 --- a/src/lib/var-expand.c +++ b/src/lib/var-expand.c @@ -639,11 +639,17 @@ var_get_key_range_full(const char *str, unsigned int *idx_r, *size_r = str[i] == '\0' ? 0 : 1; return FALSE; } else { + unsigned int depth = 1; + bool escape = FALSE; /* long key */ *idx_r = ++i; for (; str[i] != '\0'; i++) { - if (str[i] == '}') - break; + if (str[i] == '{') + depth++; + if (str[i] == '}') { + if (--depth==0) + break; + } } *size_r = i - *idx_r; return TRUE;