ANN: H98 FFI Addendum 1.0, Release Candidate 13

Alastair Reid alastair at reid-consulting-uk.ltd.uk
Fri Oct 31 09:02:08 EST 2003


I think it's ok for the finalizer function to delete the environment object if 
it wants isn't it?  

This isn't always the right thing to do but I think it is in the common case 
that there is a unique environment object for every finalized object.

In the other common case that there is a single environment object for a set 
of objects (e.g., for all objects of the same 'type'), the finalizer might 
decrement a reference count on the environment object.

Have I missed some subtlety?

--
Alastair Reid


> Regarding
>
> 	type FinalizerEnvPtr env a = FunPtr (Ptr env -> Ptr a -> IO ())
>
> 	newForeignPtrEnv :: FinalizerEnvPtr env a ->
> 		Ptr env -> Ptr a -> IO (ForeignPtr a)
> 	addForeignPtrFinalizerEnv :: FinalizerEnvPtr env a ->
> 		Ptr env -> ForeignPtr a -> IO ()
>
> Doesn't this mean that the env must be either static storage (gaining
> nothing) or dynamic storage that cannot be reclaimed (which brings us
> back to where we started)?



More information about the FFI mailing list