ole32: Fix a hack which depended on the IID of the interface being marshaled

to determine whether we were marshaling the remote unknown for the
apartment or not.
This commit is contained in:
Rob Shearman 2007-04-05 17:33:36 +01:00 committed by Alexandre Julliard
parent fbe37d1b68
commit 1360357f92
3 changed files with 5 additions and 7 deletions

View File

@ -45,6 +45,9 @@ DEFINE_OLEGUID( CLSID_DfMarshal, 0x0000030b, 0, 0 );
DEFINE_OLEGUID( CLSID_PSFactoryBuffer, 0x00000320, 0, 0 );
DEFINE_OLEGUID( CLSID_InProcFreeMarshaler, 0x0000033a, 0, 0 );
/* signal to stub manager that this is a rem unknown object */
#define MSHLFLAGSP_REMUNKNOWN 0x80000000
/* Thread-safety Annotation Legend:
*
* RO - The value is read only. It never changes after creation, so no

View File

@ -471,7 +471,7 @@ struct ifstub *stub_manager_new_ifstub(struct stub_manager *m, IRpcStubBuffer *s
/* FIXME: find a cleaner way of identifying that we are creating an ifstub
* for the remunknown interface */
if (IsEqualIID(iid, &IID_IRemUnknown))
if (flags & MSHLFLAGSP_REMUNKNOWN)
stub->ipid = m->oxid_info.ipidRemUnknown;
else
generate_ipid(m, &stub->ipid);
@ -763,7 +763,7 @@ HRESULT start_apartment_remote_unknown(void)
{
STDOBJREF stdobjref; /* dummy - not used */
/* register it with the stub manager */
hr = marshal_object(apt, &stdobjref, &IID_IRemUnknown, (IUnknown *)pRemUnknown, MSHLFLAGS_NORMAL);
hr = marshal_object(apt, &stdobjref, &IID_IRemUnknown, (IUnknown *)pRemUnknown, MSHLFLAGS_NORMAL|MSHLFLAGSP_REMUNKNOWN);
/* release our reference to the object as the stub manager will manage the life cycle for us */
IRemUnknown_Release(pRemUnknown);
if (hr == S_OK)

View File

@ -2199,12 +2199,7 @@ static void test_client_security(void)
CoTaskMemFree(pServerPrincName);
IClassFactory_Release(pProxy);
#if 0
/* FIXME: fix stub manager to not depend on the IID of the interface to
* determine whether it is really the rem unknown for the object before
* re-enabling this line */
IUnknown_Release(pProxy2);
#endif
IUnknown_Release(pUnknown1);
IUnknown_Release(pUnknown2);
IMarshal_Release(pMarshal);