Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Tuple copy
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <xavier.leroy@i...>
Subject: Re: [Caml-list] Tuple copy
> I got the following question : I have a type MSG wich is allocated using
> alloc_tuple(3) , and contains one Int and two Int32.
> Sometimes, the second Int32 is a C pointer, so I managed to garbage it by
> allocating sometimes MSG using alloc_tuple(4) and then storing a custom
> block in the fourth block (this custom block hold the C pointer, and will
> free() it when garbaged - the C pointer is also stored as an Int32 in the
> MSG to enable its access by C API ). So for the same type MSG, i'm mixing
> tuple of different sizes.
> 
> Does this can cause problems ?

It won't crash the program.  The GC "sees" the fourth field and
handles it correctly, while the Caml code never "sees" it (it trusts
the type declaration that says that the result is a triple).

However, primitives such as generic equality might return unexpected
results (but again they won't crash).  For instance, a 3-tuple MSG
will never be equal to a 4-tuple MSG, even though both agree on the
first 3 fields (and thus print identically under the toplevel, for
instance).

- Xavier Leroy
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners