camlidl で struct の配列をかえす方法?

がわからない・・・。

void f([out,length_is(*len)*] struct T** a, [out]int* len)
  quote(dealloc, "free(*a);");

こういうことかくと、90%くらい正しい stub が生成される。

中略
    for (_c3 = 0; _c3 < *len; _c3++) {
      _v4 = camlidl_c2ml_foo_struct_T(&*a[_c3], _ctx);
      modify(&Field(_vres, _c3), _v4);
    }
中略

結果を OCaml のデータ構造にコピーしているところ。だいたい正しいので何で落ちるのか最初わからなかったが、&*a[_c3] じゃなくて &(*a)[_c3] だよぉ・・・。そもそも使い方がちゃんと分かってないんじゃないかという疑惑はあるわけですが。