oleaut32: Fix Circular Reference Count In Typelib Marshaler

Robert Shearman rob at codeweavers.com
Tue Feb 7 07:18:35 CST 2006


ChangeLog:
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(-)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: bca190590cfdcb2b4d2be31dc6f86bbd5b74252b.diff
Type: text/x-patch
Size: 10251 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20060207/417326c1/bca190590cfdcb2b4d2be31dc6f86bbd5b74252b-0001.diff


More information about the wine-patches mailing list