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