projects
/
m6w6
/
ext-psi
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
|
github
raw
|
patch
|
inline
| side by side (from parent 1:
574519e
)
fix leaks
author
Michael Wallner
<mike@php.net>
Mon, 4 Jan 2016 15:54:22 +0000
(16:54 +0100)
committer
Michael Wallner
<mike@php.net>
Mon, 4 Jan 2016 15:54:22 +0000
(16:54 +0100)
src/parser.h
patch
|
blob
|
history
src/parser_proc.y
patch
|
blob
|
history
diff --git
a/src/parser.h
b/src/parser.h
index e774e9ba7df15fb299beeff111a97bab99ed8d3f..014509d621ff49ec4be198c82109615dbf7ffb4b 100644
(file)
--- a/
src/parser.h
+++ b/
src/parser.h
@@
-73,6
+73,9
@@
static inline decl_type *real_decl_type(decl_type *type) {
}
static inline void free_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);
}
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]);
}
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);
}
free(args->args);
free(args);
}
diff --git
a/src/parser_proc.y
b/src/parser_proc.y
index fc2ff7ad733488164ce2114de63fe2c166267b76..d55f7e779e47b7f4193339fb8410cade291ad491 100644
(file)
--- a/
src/parser_proc.y
+++ b/
src/parser_proc.y
@@
-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);
%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*}
}
%type impl_arg_list {impl_args*}