On Sun, 2011-05-22 at 23:19 -0700, Luke Crook wrote:
> On Sun, May 22, 2011 at 2:10 PM, Luís Oliveira <luis...@gmail.com> wrote:
> 
> > On Sat, May 21, 2011 at 1:21 AM, Luke Crook <l...@balooga.com> wrote:
> > > I think the problem is that CFFI does not allow memory to be freed if
> > that
> > > memory has not also been allocated using CFFI.
> >
> > Indeed, you shouldn't call FOREIGN-FREE on pointers to memory not
> > allocated by FOREIGN-ALLOC. You should be able to (defcfun free ...)
> > and use that.
> >
> >
> > > In my code below, a new 'sdl-version' struct is returned by
> > > (sdl-mixer-cffi::linked-version). The error seems to occur when I try to
> > > free the struct at the end of the function using foreign-free.
> >
> > However, under SBCL FOREIGN-FREE is equivalent to free() -- not sure
> > about CCL. According to SDL_Mixer's documentation,
> > Mix_Linked_Version() returns a const pointer, so it seems that the bug
> > here is that you're trying to free() non-malloc()ed memory.
> >
> >
> Thank you for pointing that out. I will fix that bug in my code.
> 
>  /* rcg06192001 get linked library's version. */
> 
>    139 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l139>
> const SDL_version *Mix_Linked_Version(void)
> 
>    140 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l140> {
> 
>    141 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l141>
>       static SDL_version linked_version;
> 
>    142 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l142>
>       SDL_MIXER_VERSION(&linked_version);
> 
>    143 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l143>
>       return(&linked_version);
> 
> 144 <http://hg.libsdl.org/SDL_mixer/file/4b699c9a269d/mixer.c#l144> }
> 
> FYI; Lispworks doesn't complain about freeing the pointer.

Which probably means that Lispworks' foreign-free doesn't check that the
pointer is valid, silently corrupting memory

-- 
Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.
http://common-lisp.net/project/iolib

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to