caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "kyra" <kyrab@mail.ru>
To: "Nicolas Cannasse" <warplayer@free.fr>
Cc: "OCaml" <caml-list@inria.fr>
Subject: Re: [Caml-list] OCam'OLE pre-release
Date: Tue, 6 Aug 2002 15:15:41 +0300	[thread overview]
Message-ID: <002d01c23d42$fc4d1080$551aa8c0@kyra> (raw)
In-Reply-To: <003901c23c65$9fe95e30$0700a8c0@warp>

> > Because the COM object can still be referenced from C.  You probably
> > forgot to do an AddRef somewhere, e.g. when extracting a COM object
> > reference from its Caml wrapper.
> >
> > Reference count management sure is tricky...
>
> True.
> If you're using OCamole to manipulate COM objects and then passing them
back
> to C, your C code need to call AddRef on the retreived COM object since
> OCamole GC'ed process does not respect the COM spec (caller is responsible
> from Release, callee call AddRef )
>
> Simply use the following function :
>
> IUnknown *get_com_object( value v ) {
>     IUnknown *o = IUnknown_val(v);
>     o->AddRef();
>     return o;
> }
>
> Nicolas Cannasse
>
I'd want to remind that original subject was 'olegen' application. Being
compiled natively it _does not work_. The error is access violation, caused
by "The object invoked has disconnected from its clients". I believe this is
because of Released COM object is invoked from _another COM object_. In my
first post on this topic I had conjectured this was design flaw - binding
Release with finalize. The main reason was:  _one cannot guarantee_ that
there are not other references to COM object from another COM objects. May
be one can suppose, but cannot guarantee. If I'm wrong, we must follow X.
Leroy and try to find the error in ocamole.cpp. If I'm wrong again, why does
olegen not work???

-------------------
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


  reply	other threads:[~2002-08-06 11:13 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-30 19:19 Nicolas Cannasse
2002-07-31 12:06 ` [Caml-list] OCam'OLE pre-release (mirror) Nicolas Cannasse
2002-07-31 12:48   ` Samuel Lacas
2002-07-31 13:13     ` Nicolas Cannasse
2002-07-31 13:30       ` Samuel Lacas
2002-08-01 23:39 ` [Caml-list] OCam'OLE pre-release kyra
2002-08-02 10:13   ` Nicolas Cannasse
2002-08-02 23:26     ` kyra
2002-08-02 23:23       ` Quetzalcoatl Bradley
2002-08-04 12:00         ` kyra
2002-08-03 11:47     ` kyra
2002-08-05  7:46       ` Nicolas Cannasse
2002-08-05  9:32         ` Xavier Leroy
2002-08-05  9:51           ` Nicolas Cannasse
2002-08-06 12:15             ` kyra [this message]
2002-08-07  8:55               ` Nicolas Cannasse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='002d01c23d42$fc4d1080$551aa8c0@kyra' \
    --to=kyrab@mail.ru \
    --cc=caml-list@inria.fr \
    --cc=warplayer@free.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).