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:
parent
fbe37d1b68
commit
1360357f92
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue