X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Flet_callback.c;h=322e3b096a73fe0507e08c64c0e2df308677829a;hp=7d44f33a98c9b7f73ea7826a7641ffbd519ab144;hb=4fd6435041048363289eb7b9243cee39b6901e4e;hpb=46a52f66821e6fb4d0fbce884a69e8e57244c008 diff --git a/src/types/let_callback.c b/src/types/let_callback.c index 7d44f33..322e3b0 100644 --- a/src/types/let_callback.c +++ b/src/types/let_callback.c @@ -44,7 +44,9 @@ void psi_let_callback_free(struct psi_let_callback **cb_ptr) *cb_ptr = NULL; psi_let_func_free(&cb->func); psi_plist_free(cb->args); - psi_plist_free(cb->cb_args); + if (cb->cb_args) { + psi_plist_free(cb->cb_args); + } if (cb->token) { free(cb->token); } @@ -100,12 +102,14 @@ bool psi_let_callback_validate(struct psi_data *data, struct psi_let_exp *exp, return false; } while (psi_plist_get(cb->args, i++, &set_exp)) { - struct psi_decl_var *cb_var, *dvar = psi_set_exp_get_decl_var(set_exp); + if (cb->cb_args) { + struct psi_decl_var *cb_var; - if (psi_plist_get(cb->cb_args, i - 1, &cb_var)) { - dvar->arg = cb_var->arg; + 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; + } } - if (!psi_set_exp_validate(data, set_exp, impl, cb->decl)) { return false; }