"Lars Nilsson" writes: > Does this indicate an error in the O'Caml manual, section 18.5.1, where > > void foo(value v1, value v2, value v3) > { > CAMLparam3(v1, v2, v3); > > CAMLreturn0; > } > > is used, in addition to a paragraph preceeding it in the same section > saying "If your C function is a procedure you must insert CAMLreturn0 > at the end"? In fact, CAMLreturn0 existing at all seems to imply the > fact that unit-returning functions (from O'Caml's point of view) can > be void in the C implementation. It doesn't say that foo() is meant to be the implementation of an external in and of itself; in fact, the absence of a CAMLprim indicates that it's not meant to be one. It's just that any function that might set off a GC needs to declare its "value"s so they can be updated if the referenced blocks are moved, and thus needs a matching CAMLreturn. -- [Jed Davis] A098 903E 9B9A DEF4 168F AA09 BF07 807E F336 59F9 0xF33659F9 "But life wasn't yes-no, on-off. Life was shades of gray, and rainbows not in the order of the spectrum." -- L. E. Modesitt, Jr., _Adiamante_