Messages in this thread | | | Date | Mon, 6 Jan 2014 15:32:47 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH 01/21] perf tools: Introduce struct add_entry_iter |
| |
On Mon, Jan 06, 2014 at 05:03:22PM +0900, Namhyung Kim wrote: > On Sun, 5 Jan 2014 16:55:10 +0100, Jiri Olsa wrote: > > On Tue, Dec 24, 2013 at 05:22:07PM +0900, Namhyung Kim wrote: > >> From: Namhyung Kim <namhyung.kim@lge.com> > > > > SNIP > > > >> + > >> +out: > >> + iter->curr++; > >> + return err; > >> +} > >> + > >> +static int > >> +iter_finish_branch_entry(struct add_entry_iter *iter, > >> + struct addr_location *al __maybe_unused) > >> +{ > >> + free(iter->priv); > >> + iter->priv = NULL; > > > > so branch_info is duplicated in the hist_entry__new.. it's not > > easy to find why this one gets freed while mem_info stays ;-) > > The branch_info is an array and each entry gets its own part in the > array - so entries alloc & copy the (part of) branch info as the branch > info iterated. But mem info is a single data for a single entry so a > new entry steals ownership of the mem info when created and not freed. > > Maybe we can alloc & copy another mem info when adds an entry and free > the original at iter->finish_entry(), but I felt it's unnecessary.. > > > > > some comment about that here would help > > How about this? > > /* > * The mem_info was either already freed in add_hist_entry() or > * passed to a new hist entry by hist_entry__new(). > */ >
sounds good, thanks jirka
| |