This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix for PR 10736


Hi Pedro,

On Tuesday 30 March 2010 07:44:25, Pedro Alves wrote:
> > +  /* Should we re-read the XML info for this target?  */
> > +  if (my_gdb_datadir && strcmp (my_gdb_datadir, gdb_datadir) != 0)
> > +    {
> > +      /* The data-directory changed from the last time we used it.
> > +        It means that we have to re-read the XML info.  */
> > +      have_initialized_sysinfo = 0;
> > +      xfree (my_gdb_datadir);
> > +      my_gdb_datadir = NULL;
> 
> The previous data dir is only released if the datadir changed.
> 
> > +      if (sysinfo)
> > +       free_syscalls_info ((void *) sysinfo);
> > +    }
> > 
> > +
> > +  /* Saving the data-directory used to read this XML info.  */
> > +  my_gdb_datadir = xstrdup (gdb_datadir);
> 
> So here my_gdb_datadir leaks if the datadir _doesn't_ change.
> I think you just need to move the xfree and my_data_dir=NULL
> statements outside the `if', before the early return.

Sorry, I don't know if I understood.  If the datadir doesn't change, the call 
to xstrdup will only be made once (i.e., when `have_initialized_sysinfo' is 
zero).  After that, it will never be called again unless datadir changes.

Thanks,

-- 
Sergio Durigan Junior
Debugger Engineer
Red Hat Inc.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]