Re: FFI callback is broken in last git version
Florian Weimer <[email protected]> Wed, 28 Sep 2016 10:36:10 +0200
| Newsgroups | gmane.comp.lang.ml.mlton.user |
|---|---|
| Message-ID | <[email protected]> |
> I updated MLton from git repository and detect what FFI callback is broken.
I think it was merely changed in a backwards-incompatible way.
>> mlton
> MLton gd201ca9-dirty (built Tue Sep 27 15:21:50 EEST 2016 on thinkpad)
>
>
>> cat callback.c
> void foo ( int n, void (*fn) (int) ) {
> int i = 1;
> while (n--) {
> (*fn)(i++);
> }
> return;
> }
>
>
>> cat cb-mlton.sml
> val foo = _import "foo" public: int * MLton.Pointer.t -> unit;
> val () = (_export "cb" : (int -> unit) -> unit;) (fn v => print
> ((Int.toString v) ^ "\n"))
> val cb = _address "cb" public: MLton.Pointer.t;
> val _ = foo(3, cb)
You need to import foo with the “reentrant“ attribute, like this
(untested):
val foo = _import "foo" public reentrant: int * MLton.Pointer.t -> unit;
--
You received this message because you are subscribed to the Google Groups "MLton-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
------------------------------------------------------------------------------
_______________________________________________
MLton-user mailing list
[email protected]; [email protected]
https://lists.sourceforge.net/lists/listinfo/mlton-user