* Free our temporary array of terminals
*/
if (tokens != &terminals) talloc_free(tokens);
+ fr_sbuff_marker_release(&m_s);
return -1;
}
xlat_exp_insert_tail(head, node);
node = NULL;
+ fr_sbuff_marker_release(&m_s);
continue;
}
+
/*
* We have parsed as much as we can as unescaped
* input. Either some text (and added the node
if (fr_sbuff_adv_past_str_literal(in, "%{")) {
TALLOC_FREE(node); /* nope, couldn't use it */
if (xlat_tokenize_expansion(head, in, t_rules) < 0) goto error;
+ next:
+ fr_sbuff_marker_release(&m_s);
continue;
}
if (fr_sbuff_adv_past_str_literal(in, "%(")) {
TALLOC_FREE(node); /* nope, couldn't use it */
if (xlat_tokenize_function_args(head, in, t_rules) < 0) goto error;
- continue;
+ goto next;
}
/*
* Tokenize the function arguments using the new method.
*/
if (xlat_tokenize_function_new(head, in, t_rules) < 0) goto error;
- continue;
+ goto next;
}
/*
*/
TALLOC_FREE(node);
XLAT_DEBUG("VALUE-BOX <-- (empty)");
+ fr_sbuff_marker_release(&m_s);
break;
}