ForeignObj Finalizer in Hugs
KAKIHARA Norihiro
YIU04646@nifty.com
Mon, 2 Jul 2001 23:20:21 +0900
> Hi,
>
> this turned out to be a bug in the Hugs internals & not how
> 'foreign label' was implemented per se. A fix has been checked
> into the CVS repository, so the anonymous CVS should mirror
> it sometime within the next 24 hours.
>
> Many thanks for reporting the problem.
>
> --sigbjorn
I've tried the latest CVS version and make sure!
Thanks!
But I found that my runhugs seemed to ignore finalizer...
-------------------------------
extern void *newObj(void) {
void *obj;
obj = malloc(1);
printf("obj is born.\n");
return obj;
}
extern void delObj(MyInt obj) {
printf("obj dies.\n");
free(obj);
}
module Main(main) where
import Foreign
foreign label "ForeignObj" "delObj" delObj :: Addr
foreign import "ForeignObj" "newObj" newObj :: IO Addr
main =
newObj >>= (\obj ->
makeForeignObj obj delObj >>
putStr "obj is alive.")
-------------------------------
Hugs prints:
obj is born.
obj is alive.
obj dies.
runhugs prints:
obj is born.
obj is alive.
How does yours work?