- /* now check for known vars */
- for (l = 0; l < free_call->vars->count; ++l) {
- int check = 0;
- decl_var *free_var = free_call->vars->vars[l];
-
- if (!strcmp(free_var->name, impl->decl->func->var->name)) {
- check = 1;
- free_var->arg = impl->decl->func;
- } else if (impl->decl->args) {
- for (k = 0; k < impl->decl->args->count; ++k) {
- decl_arg *free_arg = impl->decl->args->args[k];
-
- if (!strcmp(free_var->name, free_arg->var->name)) {
- check = 1;
- free_var->arg = free_arg;
- break;
- }
- }
- }
-
- if (!check) {
- data->error(data, free_var->token, PSI_WARNING,
- "Unknown variable '%s' of `free` statement"
- " of implementation '%s'",
- free_var->name, impl->func->name);
- return 0;
- }
- }
- }
+ while (psi_plist_get(fre->exps, i++, &exp)) {
+ psi_free_exp_exec(exp, frame);