Em Wed, Nov 01, 2017 at 01:13:57PM +0100, Jiri Olsa escreveu:
> On Tue, Oct 31, 2017 at 11:06:53AM +0900, Namhyung Kim wrote:
> > When libbfd is not used, addr2inlines() executes `addr2line -i` and
> > process output line by line.  But it resets filename to NULL in the loop
> > so getline() allocates additional memory everytime instead of realloc.
> > 
> > Cc: Jin Yao <[email protected]>
> > Cc: Milian Wolff <[email protected]>
> > Signed-off-by: Namhyung Kim <[email protected]>
> 
> Acked-by: Jiri Olsa <[email protected]>

Thanks, added this and the Reviewed-by to 2/2.

- Arnaldo
 
> jirka
> 
> > ---
> >  tools/perf/util/srcline.c | 7 ++-----
> >  1 file changed, 2 insertions(+), 5 deletions(-)
> > 
> > diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
> > index c143c3bc1ef8..51dc49c65476 100644
> > --- a/tools/perf/util/srcline.c
> > +++ b/tools/perf/util/srcline.c
> > @@ -456,20 +456,17 @@ static struct inline_node *addr2inlines(const char 
> > *dso_name, u64 addr,
> >     while (getline(&filename, &len, fp) != -1) {
> >             char *srcline;
> >  
> > -           if (filename_split(filename, &line_nr) != 1) {
> > -                   free(filename);
> > +           if (filename_split(filename, &line_nr) != 1)
> >                     goto out;
> > -           }
> >  
> >             srcline = srcline_from_fileline(filename, line_nr);
> >             if (inline_list__append(sym, srcline, node) != 0)
> >                     goto out;
> > -
> > -           filename = NULL;
> >     }
> >  
> >  out:
> >     pclose(fp);
> > +   free(filename);
> >  
> >     return node;
> >  }
> > -- 
> > 2.14.3
> > 

Reply via email to