freeHaskellFunctionPtr
Simon Marlow
simonmar at microsoft.com
Tue Jan 2 07:57:26 EST 2001
> Tue, 02 Jan 2001 19:40:11 +1100, Manuel M. T. Chakravarty
> <chak at cse.unsw.edu.au> pisze:
>
> > PS: It could be argued that `Ptr ()' can always be used
> > instead of `Addr' and that therefore we should do away
> > with `Addr' altogether. Opinions?
>
> I agree that Addr uses should be replaced by Ptr and FunPtr
> (well, I thought it was obvious!).
Yup, I agree with all this. We should deprecate Addr in the interests
of having as few interfaces as possible.
> newForeignObj has been converted to Ptr, but since ForeignObjs
> themselves were later replaced with ForeignPtrs, it makes sense to
> let newForeignObj use Addr again as in previous released versions of
> ghc. For withForeignObj it could be done for consistency too (it's
> new so it does not really matter).
Sounds reasonable.
> I would let freeHaskellFunPtr accept and ignore nullFunPtr, since I
> once had to write
> when (ptr /= nullFunPtr) $ freeHaskellFunPtr ptr
> and it can be seen as consistent with free.
This makes sense if nullFunPtr is really a valid value for a FunPtr.
The FFI spec doesn't say anything about f.e.d. functions possibly
returning nullFunPtr.
I've always thought that C's free() accepting NULL as a valid argument
was a questionable decision (although I have to admit it's convenient at
times).
Cheers,
Simon
More information about the FFI
mailing list