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)? _______________________________________________ FFI mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/ffi