workaround for old libffi
[m6w6/ext-psi] / src / parser.h
index 7faa43b712f74a54b20cad9b657f89ac55ecf0ef..014509d621ff49ec4be198c82109615dbf7ffb4b 100644 (file)
@@ -73,6 +73,9 @@ static inline decl_type *real_decl_type(decl_type *type) {
 }
 
 static inline void free_decl_type(decl_type *type) {
+       if (type->token) {
+               free(type->token);
+       }
        free(type->name);
        free(type);
 }
@@ -503,10 +506,18 @@ static inline void free_impl_arg(impl_arg *arg) {
        free(arg);
 }
 
+typedef struct impl_vararg {
+       impl_arg *name;
+       struct impl_args *args;
+       token_t *types;
+       impl_val *values;
+       void **free_list;
+} impl_vararg;
+
 typedef struct impl_args {
        impl_arg **args;
        size_t count;
-       impl_arg *vararg;
+       impl_vararg vararg;
 } impl_args;
 
 static inline impl_args *init_impl_args(impl_arg *arg) {
@@ -531,6 +542,9 @@ static inline void free_impl_args(impl_args *args) {
        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);
 }