core: prevent infinite loop in evaluation of expression with extra_vars_eval
When extra variables are evaluated, to prevent infinite loop if the evaluated variable is calling itself, it is removed from hashtable "extra_vars" before evaluation.
This commit is contained in:
parent
d31e4f1d9a
commit
1963191700
@ -345,10 +345,17 @@ eval_replace_vars_cb (void *data, const char *text)
|
||||
{
|
||||
if (extra_vars_eval)
|
||||
{
|
||||
return eval_replace_vars (ptr_value, pointers,
|
||||
extra_vars, extra_vars_eval,
|
||||
prefix, suffix,
|
||||
eval_regex);
|
||||
tmp = strdup (ptr_value);
|
||||
if (!tmp)
|
||||
return NULL;
|
||||
hashtable_remove (extra_vars, text);
|
||||
value = eval_replace_vars (tmp, pointers,
|
||||
extra_vars, extra_vars_eval,
|
||||
prefix, suffix,
|
||||
eval_regex);
|
||||
hashtable_set (extra_vars, text, tmp);
|
||||
free (tmp);
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user