fix leaks
authorMichael Wallner <mike@php.net>
Mon, 4 Jan 2016 15:54:22 +0000 (16:54 +0100)
committerMichael Wallner <mike@php.net>
Mon, 4 Jan 2016 15:54:22 +0000 (16:54 +0100)
src/parser.h
src/parser_proc.y

index e774e9ba7df15fb299beeff111a97bab99ed8d3f..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);
 }
@@ -539,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);
 }
index fc2ff7ad733488164ce2114de63fe2c166267b76..d55f7e779e47b7f4193339fb8410cade291ad491 100644 (file)
@@ -333,6 +333,7 @@ impl_args(args) ::= LPAREN impl_arg_list(args_) COMMA impl_vararg(va) RPAREN. {
 %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*}