ole32: OleLoad should not fail even if IOleObject::GetMiscStatus fails.
This commit is contained in:
parent
1f437a9349
commit
d95e2dbd62
|
@ -1181,13 +1181,12 @@ HRESULT WINAPI OleLoad(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hres))
|
/*
|
||||||
/*
|
* Initialize the object with its IPersistStorage interface.
|
||||||
* Initialize the object with it's IPersistStorage interface.
|
*/
|
||||||
*/
|
hres = IOleObject_QueryInterface(pUnk,
|
||||||
hres = IOleObject_QueryInterface(pUnk,
|
&IID_IPersistStorage,
|
||||||
&IID_IPersistStorage,
|
(void**)&persistStorage);
|
||||||
(void**)&persistStorage);
|
|
||||||
|
|
||||||
if (SUCCEEDED(hres))
|
if (SUCCEEDED(hres))
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,6 +57,7 @@ static FORMATETC *g_expected_fetc = NULL;
|
||||||
|
|
||||||
static BOOL g_showRunnable = TRUE;
|
static BOOL g_showRunnable = TRUE;
|
||||||
static BOOL g_isRunning = TRUE;
|
static BOOL g_isRunning = TRUE;
|
||||||
|
static BOOL g_failGetMiscStatus;
|
||||||
|
|
||||||
#define CHECK_EXPECTED_METHOD(method_name) \
|
#define CHECK_EXPECTED_METHOD(method_name) \
|
||||||
do { \
|
do { \
|
||||||
|
@ -328,8 +329,16 @@ static HRESULT WINAPI OleObject_GetMiscStatus
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
CHECK_EXPECTED_METHOD("OleObject_GetMiscStatus");
|
CHECK_EXPECTED_METHOD("OleObject_GetMiscStatus");
|
||||||
*pdwStatus = DVASPECT_CONTENT;
|
if(!g_failGetMiscStatus)
|
||||||
return S_OK;
|
{
|
||||||
|
*pdwStatus = OLEMISC_RECOMPOSEONRESIZE;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*pdwStatus = 0x1234;
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI OleObject_SetColorScheme
|
static HRESULT WINAPI OleObject_SetColorScheme
|
||||||
|
@ -899,10 +908,32 @@ static void test_OleLoad(IStorage *pStorage)
|
||||||
{ "OleObject_SetClientSite", 0 },
|
{ "OleObject_SetClientSite", 0 },
|
||||||
{ "OleObject_Release", 0 },
|
{ "OleObject_Release", 0 },
|
||||||
{ "OleObject_QueryInterface", 0 },
|
{ "OleObject_QueryInterface", 0 },
|
||||||
|
{ "OleObject_GetMiscStatus", 0 },
|
||||||
{ "OleObject_Release", 0 },
|
{ "OleObject_Release", 0 },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Test once with IOleObject_GetMiscStatus failing */
|
||||||
|
expected_method_list = methods_oleload;
|
||||||
|
g_failGetMiscStatus = TRUE;
|
||||||
|
trace("OleLoad:\n");
|
||||||
|
hr = OleLoad(pStorage, &IID_IOleObject, (IOleClientSite *)0xdeadbeef, (void **)&pObject);
|
||||||
|
ok(hr == S_OK ||
|
||||||
|
broken(hr == E_INVALIDARG), /* win98 and win2k */
|
||||||
|
"OleLoad failed with error 0x%08x\n", hr);
|
||||||
|
if(pObject)
|
||||||
|
{
|
||||||
|
DWORD dwStatus = 0xdeadbeef;
|
||||||
|
hr = IOleObject_GetMiscStatus(pObject, DVASPECT_CONTENT, &dwStatus);
|
||||||
|
ok(hr == E_FAIL, "Got 0x%08x\n", hr);
|
||||||
|
ok(dwStatus == 0x1234, "Got 0x%08x\n", dwStatus);
|
||||||
|
|
||||||
|
IOleObject_Release(pObject);
|
||||||
|
CHECK_NO_EXTRA_METHODS();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test again, let IOleObject_GetMiscStatus succeed. */
|
||||||
|
g_failGetMiscStatus = FALSE;
|
||||||
expected_method_list = methods_oleload;
|
expected_method_list = methods_oleload;
|
||||||
trace("OleLoad:\n");
|
trace("OleLoad:\n");
|
||||||
hr = OleLoad(pStorage, &IID_IOleObject, (IOleClientSite *)0xdeadbeef, (void **)&pObject);
|
hr = OleLoad(pStorage, &IID_IOleObject, (IOleClientSite *)0xdeadbeef, (void **)&pObject);
|
||||||
|
@ -911,6 +942,11 @@ static void test_OleLoad(IStorage *pStorage)
|
||||||
"OleLoad failed with error 0x%08x\n", hr);
|
"OleLoad failed with error 0x%08x\n", hr);
|
||||||
if (pObject)
|
if (pObject)
|
||||||
{
|
{
|
||||||
|
DWORD dwStatus = 0xdeadbeef;
|
||||||
|
hr = IOleObject_GetMiscStatus(pObject, DVASPECT_CONTENT, &dwStatus);
|
||||||
|
ok(hr == S_OK, "Got 0x%08x\n", hr);
|
||||||
|
ok(dwStatus == 1, "Got 0x%08x\n", dwStatus);
|
||||||
|
|
||||||
IOleObject_Release(pObject);
|
IOleObject_Release(pObject);
|
||||||
CHECK_NO_EXTRA_METHODS();
|
CHECK_NO_EXTRA_METHODS();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue