Browse thread
CAMLreturn does not work for floats between 0 and 1 ?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| 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. Matt