Ross Paterson <ross@soi.city.ac.uk> wrote,
Alastair Reid <alastair@reid-consulting-uk.ltd.uk> wrote:
I guess the issue is that if someone wanted to use MarshalAlloc.free as a finalizer they would not be able to do so. Since we don't guarantee that MarshalAlloc.malloc is "stdio.h malloc", they couldn't portably cons up a compatible &free.
Yes, you're trying to recover something that was lost with the change to newForeignPtr. Formerly one could allocate something with malloc or mallocArray and add a finalizer that called free. Now you can't, except in the canned special case of mallocForeignPtr. But there's nothing similar for arrays, as required e.g. in Data.Array.Storable.
I think SimonM and Ross have a point here. There isn't really anything gained from linking `MarshalAlloc.malloc' up with a C version of `MarshalAlloc.free'. So, I think we should leave it as it is. Manuel