Robert Shearman : oleaut32: Fix circular reference count in Typelib marshaler.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 7 09:57:33 CST 2006


Module: wine
Branch: refs/heads/master
Commit: b0218db90a8b3c81ecb6529c089acc0074cd2f9c
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=b0218db90a8b3c81ecb6529c089acc0074cd2f9c

Author: Robert Shearman <rob at codeweavers.com>
Date:   Tue Feb  7 16:26:23 2006 +0100

oleaut32: Fix circular reference count in Typelib marshaler.
The current method of handling typelib-marshaled interfaces that derive
from IDispatch is to query for an IDispatch pointer from the proxy, but
this causes a circular reference count.
Fix the reference counting by loading using the IRpcProxyBuffer of
IDispatch without an outer unknown, so that the lifetime is controlled
by the typelib-marshaled interface's proxy. The IDispatch proxy now
shares the same channel as the typelib-marshaled interface, so fix up
the stub side to handle this.

---

 dlls/oleaut32/tmarshal.c |  153 +++++++++++++++++++++++++++++-----------------
 1 files changed, 95 insertions(+), 58 deletions(-)

Diff:   http://source.winehq.org/git/?p=wine.git;a=commitdiff;h=b0218db90a8b3c81ecb6529c089acc0074cd2f9c



More information about the wine-cvs mailing list