On Jan 2, 2008 1:55 AM, Xavier <firstname.lastname@example.org> wrote:
> Dan McGee wrote:
> > Note that chk_filedifference always returned a NEW list, thus the
> > return value could always be freed by the calling function. Thus, your
> > change here gave me a big fat segfault because you didn't dupe the
> > list first. I've fixed this locally and replaced the return with a
> > alpm_list_strdup(pA) call.
> > This segfault didn't get exposed until I made a *completely* unrelated
> > change (removing a gettext call around a message that doesn't need to
> > be gettexted), so it took some time to track down.
> > Lesson to be learned here: know whether your function allocates new
> > objects or not, and ensure ALL return paths do it the same way. Then
> > be sure to check that the calling function does a free if necessary.
> Oh sorry, I totally overlooked that indeed..
> If only it had segfaulted in my test case, I would have caught it
> That's bad, I wanted to fix a minor bug and caused a much bigger one
Well your pactest did end up causing the segfault, but not until
*after* I made those completely unrelated changes. Memory allocation
can do weird things sometimes.
pacman-dev mailing list