[PATCH 2/2] shell32/tests: Check IDispatch for NULL before using its functions
Nikolay Sivov
bunglehead at gmail.com
Mon Sep 25 13:44:26 CDT 2017
On 25.09.2017 21:34, Fabian Maurer wrote:
> Fixes Bug 43749
>
> Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
> ---
> dlls/shell32/tests/shelldispatch.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/dlls/shell32/tests/shelldispatch.c b/dlls/shell32/tests/shelldispatch.c
> index 7b5afa0c94..b31497b557 100644
> --- a/dlls/shell32/tests/shelldispatch.c
> +++ b/dlls/shell32/tests/shelldispatch.c
> @@ -134,13 +134,15 @@ static void test_namespace(void)
> r = IShellDispatch_get_Application(sd, &disp);
> ok(r == S_OK, "Failed to get application pointer, hr %#x.\n", r);
> ok(disp == (IDispatch *)sd, "Unexpected application pointer %p.\n", disp);
> - IDispatch_Release(disp);
> + if(disp)
> + IDispatch_Release(disp);
>
> disp = NULL;
> r = IShellDispatch_get_Parent(sd, &disp);
> ok(r == S_OK, "Failed to get Shell object parent, hr %#x.\n", r);
> ok(disp == (IDispatch *)sd, "Unexpected parent pointer %p.\n", disp);
> - IDispatch_Release(disp);
> + if(disp)
> + IDispatch_Release(disp);
>
> VariantInit(&var);
> folder = (void*)0xdeadbeef;
> @@ -502,7 +504,8 @@ static void test_items(void)
> r = FolderItem_get_Parent(item, &disp);
> ok(r == S_OK, "Failed to get parent pointer, hr %#x.\n", r);
> ok(disp == (IDispatch *)folder, "Unexpected parent pointer %p.\n", disp);
> - IDispatch_Release(disp);
> + if(disp)
> + IDispatch_Release(disp);
>
> if (item) FolderItem_Release(item);
> VariantClear(&var);
> @@ -1036,6 +1039,10 @@ todo_wine {
> ok(disp == NULL, "got %p\n", disp);
> ok(ret == 0, "got %d\n", ret);
> }
> + else if (disp == NULL) {
> + ok(FALSE, "disp is NULL\n");
> + skip("disp is NULL\n");
> + }
> else {
> static const IID *browser_riids[] = {
> &IID_IWebBrowser2,
> @@ -1055,7 +1062,6 @@ todo_wine {
> IShellView *sv;
> IUnknown *unk;
>
> - ok(disp != NULL, "got %p\n", disp);
> ok(ret != HandleToUlong(hwnd), "got %d\n", ret);
>
> /* IDispatch-related tests */
>
So what happens exactly that makes get_Parent() and get_Application()
fail? I don't think workarounds like that are useful without
understanding the problem.
More information about the wine-devel
mailing list