X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Ffree_exp.c;h=57ede26295cc969d460516362bc9a9ebe0726597;hp=19c7a60abf60e499d146168de2265e57008e2aba;hb=8d1d1243a8a42b0046ac670808913b3bb06c994b;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84 diff --git a/src/types/free_exp.c b/src/types/free_exp.c index 19c7a60..57ede26 100644 --- a/src/types/free_exp.c +++ b/src/types/free_exp.c @@ -102,8 +102,7 @@ bool psi_free_exp_validate(struct psi_data *data, struct psi_free_exp *exp, /* now check for known vars */ exp->let = calloc(psi_plist_count(exp->vars), sizeof(*exp->let)); for (i = 0; psi_plist_get(exp->vars, i, &free_var); ++i) { - if (!psi_decl_arg_get_by_var(free_var, impl->decl->args, - impl->decl->func)) { + if (!psi_impl_get_decl_arg(impl, free_var)) { data->error(data, free_var->token, PSI_WARNING, "Unknown variable '%s' of `free` statement" " of implementation '%s'", @@ -124,8 +123,9 @@ void psi_free_exp_exec(struct psi_free_exp *f, struct psi_call_frame *frame) void **args; struct psi_decl_var *dvar; struct psi_call_frame *free_call; + struct psi_context *ctx = psi_call_frame_get_context(frame); - free_call = psi_call_frame_init(frame->context, f->decl, NULL); + free_call = psi_call_frame_init(ctx, f->decl, NULL); psi_call_frame_enter(free_call); args = psi_call_frame_get_arg_pointers(free_call);