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 <[email protected]> > > > > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

