English version
Accueil     Ŕ propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis ŕ jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml ŕ l'adresse ocaml.org.

Browse thread
CAMLreturn does not work for floats between 0 and 1 ?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-02-16 (19:19)
From: Matthieu Dubuget <matthieu.dubuget@g...>
Subject: Re: [Caml-list] CAMLreturn does not work for floats between 0 and 1 ?
Daniel Bünzli a écrit :
> Le 16 févr. 07 ŕ 17:20, Matthieu Dubuget a écrit :
>> Suppose that I have to construct one or more value(s) to pass them to
>> OCaml land. I do have to use CAMLlocal macros for that, don't I.
> It depends. If you _allocate_ (e.g. ints are not allocated) a caml
> value v1 then another caml v2 and then modify v1, you need to keep a
> hand on v1 with CAMLparam because it may move when you allocate v2. If
> you allocate only a single value then there is no need to do it
> (unless some code you call may invoke the gc before you use v1).
That means that I will have to review carefully my code...
>> Can use them without CAMLparam and CAMLreturn macros?
> No. But I never did the C -> ocaml -> C way so I don't really know how
> to proceed. The first thing that comes to mind is to store the result
> in a variable given to  the function.
Yes. That's the solution I was planning.
It took me a long time to narrow the problem, because I have a lot of
calls of this kind and was never bitten by this problem.
But at first glance, i did not find one in my libraries with would have
returned a small float value.

The problem is not the solution, but the fact that I will have to review
my code to check all this.

> Maybe there's another way, I don't know.
At the first place, except the fact that I misused the macros, I still
do not understand why CAMLreturn(0.05) would return 0.?

Thanks for your replies.