Mercurial > dovecot > core-2.2
changeset 22798:30265531b608
lib: Support nested keys in var_get_key_range_full
Fixes problems with %{if...}
failed: if: requires four or five parameters, got 1
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Fri, 01 Dec 2017 14:53:46 +0200 |
parents | 2c72506cd19a |
children | d92381842a4f |
files | src/lib/var-expand.c |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/var-expand.c Thu Jan 25 12:27:41 2018 +0200 +++ b/src/lib/var-expand.c Fri Dec 01 14:53:46 2017 +0200 @@ -639,11 +639,17 @@ *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;