- cb_func = cb_type->real.func;
- for (i = 0; i < cb->args->count; ++i) {
- if (!validate_set_value(data, cb->args->vals[i], cb_func->args->count, cb_func->args->args, 0)) {
- return 0;
+ while (psi_plist_get(cb->args, i++, &set_exp)) {
+ if (cb->cb_args) {
+ struct psi_decl_var *cb_var;
+
+ if (psi_plist_get(cb->cb_args, i - 1, &cb_var)) {
+ struct psi_decl_var *dvar = psi_set_exp_get_decl_var(set_exp);
+ dvar->arg = cb_var->arg;
+ }
+ }
+
+ scope->current_set = set_exp;
+ scope->cb_decl = cb->decl;
+
+ if (!psi_set_exp_validate(data, set_exp, scope)) {
+ scope->cb_decl = NULL;
+ scope->current_set = parent_set;
+ return false;