struct psi_let_callback *psi_let_callback_init(struct psi_let_func *func,
struct psi_plist *args, struct psi_plist *cb_args)
{
- struct psi_let_callback *cb = calloc(1, sizeof(*cb));
+ struct psi_let_callback *cb = pecalloc(1, sizeof(*cb), 1);
cb->func = func;
cb->args = args;
cb->cb_args = cb_args;
if (cb->cb_args) {
psi_plist_free(cb->cb_args);
}
- if (cb->token) {
- free(cb->token);
- }
+ psi_token_free(&cb->token);
free(cb);
}
}
data->error(data, cb->token, PSI_WARNING,
"Argument count of callback statement of implementation '%s'"
"does not match argument count of callback declaration '%s'",
- impl->func->name, cb_decl->func->var->name);
+ impl->func->name->val, cb_decl->func->var->name->val);
return false;
}
if (cb_type->type != PSI_T_FUNCTION) {
data->error(data, cb_var->token, PSI_WARNING,
"Expected a function: %s",
- cb_var->name);
+ cb_var->name->val);
return false;
}
cb->decl = cb_type->real.func;
}
}
dprintf(fd, ") as %s(%s(",
- callback->func->name,
- callback->func->var->name);
+ callback->func->name->val,
+ callback->func->var->name->val);
if (callback->args) {
size_t i = 0, last = psi_plist_count(callback->args);