[OLE #45] Proxy Manager Fixes

Robert Shearman rob at codeweavers.com
Tue Jan 18 16:04:42 CST 2005


Hi,

Ok. It turns out the proxy manager was a bit broken due to an incorrect 
list iteration in the destructor of the proxy manager which meant that 
none of the ifproxies were actually freed. Fixing this uncovered a bug 
where the IRpcProxyBuffer was freed twice - we should not release it 
from the destructor. I have also fixed the ref-couting so what we don't 
pass around an object with 0 refs, which tended to make builtin ole32 
with native oleaut32 crash. I have also fixed (kinda) the issue Bill 
Medland was reporting where doing a CreateInstance for an IUnknown 
interface was a bit messed up (this is bad programming anyway as it 
doubles the number of RPC calls required). It will now print a nice 
helpful FIXME message that will remain until IRemUnknown is implemented. 
There was also a reference counting leak in the class factory stub which 
was uncovered by the new tests. These test the success case of 
CreateInstance for an IUnknown as mentioned above.

Rob

Changelog:
- Initialize ppv pointer in ClientIdentity_QueryInterface to NULL as 
apps depend on this.
- Don't release IRpcProxyBuffer on ifproxy destruction - the caller will 
do this for us.
- Make find_proxy_manager add a reference to the proxy manager and make 
proxy_manager_construct return an object with a valid ref-count.
- Remove stray not operator to fix a memory leak / crash in 
proxy_manager_destroy.
- More debug messages, especially on errors.
- Fix ref-count leak in the Class Factory proxy.
- Add a test case for IClassFactory_CreateInstance.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ole45.diff
Type: text/x-patch
Size: 10777 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20050118/55a01486/ole45.bin


More information about the wine-patches mailing list