}
static inline void free_decl_type(decl_type *type) {
+ if (type->token) {
+ free(type->token);
+ }
free(type->name);
free(type);
}
for (i = 0; i < args->count; ++i) {
free_impl_arg(args->args[i]);
}
+ if (args->vararg.name) {
+ free_impl_arg(args->vararg.name);
+ }
free(args->args);
free(args);
}
%destructor impl_vararg {free_impl_arg($$);}
impl_vararg(va) ::= impl_type(type) reference(r) ELLIPSIS DOLLAR NAME(T). {
va = init_impl_arg(type, init_impl_var(T->text, r), NULL);
+ free(T);
}
%type impl_arg_list {impl_args*}