On Fri, Jul 1, 2011 at 3:56 PM, Fabrice Le Fessant
<[email protected]> wrote:
> I would not call camlidl_alloc_small() without first initializing
> correctly _varg[1] to Val_unit.

Actually, it's initialized to zero. The full generated fragment:

HRESULT STDMETHODCALLTYPE camlidl_ppm_IConfigLoad_setLogger_callback(
        struct IConfigLoad * this,
        /* in */ void *log)
{
  value _varg[2] = { 0, 0, };
  value _vres;
  HRESULT _res;
  (*camlidl_acquire_runtime)();
  Begin_roots_block(_varg, 2)
    _varg[0] = ((struct camlidl_intf *) this)->caml_object;
    _varg[1] = camlidl_alloc_small(1, Abstract_tag);
    Field(_varg[1], 0) = (value) log;
  End_roots()
  _vres = caml_callbackN_exn(caml_get_public_method(_varg[0],
Val_int(1007700946)), 2, _varg);
  if (Is_exception_result(_vres)) {
    _res = camlidl_result_exception(NULL, Extract_exception(_vres));
  } else {
    _res = S_OK;
  }
  (*camlidl_release_runtime)();
  return _res;
}

It was Xavier Leroy who initially decided to use zeroes, so I think it's OK?

- Dmitry Bely

-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to