This fixes a bug where xlat functions calls that were children of an unresolved xlat function call were never instantiated, even if that call was later resolved.
It presented with crashes when using %{expr:} as that function is registered by a module and is initially unresolved.
}
break;
+ case XLAT_FUNC_UNRESOLVED:
+ if (!type || (type & XLAT_FUNC_UNRESOLVED)) {
+ ret = walker(node, uctx);
+ if (ret < 0) return ret;
+ }
+
+ /*
+ * Now evaluate the function's arguments
+ */
+ if (node->child) {
+ ret = xlat_eval_walk(node->child, walker, type, uctx);
+ if (ret < 0) return ret;
+ }
+ break;
+
case XLAT_ALTERNATE:
if (!type || (type & XLAT_ALTERNATE)) {
ret = walker(node, uctx);