[PATCH] qedit: Return E_POINTER from Timeline_QueryInterface if ppv is NULL.

Andrew Eikum aeikum at codeweavers.com
Fri Apr 29 08:30:33 CDT 2016


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Thu, Apr 28, 2016 at 08:08:00AM -0600, Alex Henrie wrote:
> Cc: Andrew Eikum <aeikum at codeweavers.com>
> 
> Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
> ---
>  dlls/qedit/tests/timeline.c | 9 ++++++++-
>  dlls/qedit/timeline.c       | 3 +++
>  2 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/dlls/qedit/tests/timeline.c b/dlls/qedit/tests/timeline.c
> index 2d37010..40cf774 100644
> --- a/dlls/qedit/tests/timeline.c
> +++ b/dlls/qedit/tests/timeline.c
> @@ -29,7 +29,7 @@ static void test_timeline(void)
>      HRESULT hr;
>      IAMTimeline *timeline = NULL;
>      IAMTimeline *timeline2 = (IAMTimeline *)0xdeadbeef;
> -    IAMTimelineObj *obj;
> +    IAMTimelineObj *obj = (IAMTimelineObj *)0xdeadbeef;
>      IAMTimelineObj obj_iface;
>      TIMELINE_MAJOR_TYPE type;
>  
> @@ -37,6 +37,13 @@ static void test_timeline(void)
>      ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG), "CoCreateInstance failed: %08x\n", hr);
>      if (!timeline) return;
>  
> +    hr = IAMTimeline_QueryInterface(timeline, &IID_IAMTimelineObj, NULL);
> +    ok(hr == E_POINTER, "Expected E_POINTER got %08x\n", hr);
> +
> +    hr = IAMTimeline_QueryInterface(timeline, &IID_IAMTimelineObj, (void **)&obj);
> +    ok(hr == E_NOINTERFACE, "Expected E_NOINTERFACE got %08x\n", hr);
> +    ok(!obj, "Expected NULL got %p\n", obj);
> +
>      hr = IAMTimeline_CreateEmptyNode(timeline, NULL, 0);
>      ok(hr == E_POINTER, "Expected E_POINTER got %08x\n", hr);
>  
> diff --git a/dlls/qedit/timeline.c b/dlls/qedit/timeline.c
> index 450e796..906efd5 100644
> --- a/dlls/qedit/timeline.c
> +++ b/dlls/qedit/timeline.c
> @@ -70,6 +70,9 @@ static HRESULT WINAPI Timeline_QueryInterface(IUnknown *iface, REFIID riid, void
>  
>      TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
>  
> +    if (!ppv)
> +        return E_POINTER;
> +
>      *ppv = NULL;
>      if (IsEqualIID(riid, &IID_IUnknown))
>          *ppv = &This->IUnknown_inner;
> -- 
> 2.8.0
> 



More information about the wine-patches mailing list