Messages in this thread |  | | Date | Thu, 16 Jul 2020 20:51:58 +0200 | From | Jiri Olsa <> | Subject | Re: [PATCH 03/18] perf metric: Add expr__add_id function |
| |
On Thu, Jul 16, 2020 at 12:29:06PM -0300, Arnaldo Carvalho de Melo wrote: > Em Sun, Jul 12, 2020 at 03:26:19PM +0200, Jiri Olsa escreveu: > > Adding expr__add_id function to data for ID > > with zero value, which is used when scanning > > the expression for IDs. > > > > Acked-by: Ian Rogers <irogers@google.com> > > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > > --- > > tools/perf/util/expr.c | 29 +++++++++++++++++++++++------ > > tools/perf/util/expr.h | 1 + > > tools/perf/util/expr.y | 2 +- > > 3 files changed, 25 insertions(+), 7 deletions(-) > > > > diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c > > index 5d05f9765ed8..4b8953605aed 100644 > > --- a/tools/perf/util/expr.c > > +++ b/tools/perf/util/expr.c > > @@ -32,6 +32,24 @@ static bool key_equal(const void *key1, const void *key2, > > return !strcmp((const char *)key1, (const char *)key2); > > } > > > > +/* Caller must make sure id is allocated */ > > +int expr__add_id(struct expr_parse_ctx *ctx, const char *id) > > +{ > > + struct expr_id_data *data_ptr = NULL, *old_data = NULL; > > + char *old_key = NULL; > > + int ret; > > + > > + data_ptr = malloc(sizeof(*data_ptr)); > > + if (!data_ptr) > > + return -ENOMEM; > > + > > + ret = hashmap__set(&ctx->ids, id, data_ptr, > > + (const void **)&old_key, (void **)&old_data); > > + free(old_key); > > + free(old_data); > > Hey, if hashmap__set() fails then we leak data_ptr?
right, good catch, will fix
thanks, jirka
|  |