Module: wine Branch: refs/heads/master Commit: b0218db90a8b3c81ecb6529c089acc0074cd2f9c URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=b0218db90a8b3c81ecb6529c...
Author: Robert Shearman rob@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=b0218db90a8b3c81ecb6...