From: Andrew Eikum Subject: Re: [PATCH] qedit: Return E_POINTER from Timeline_QueryInterface if ppv is NULL. Message-Id: <20160429133032.GU31257@foghorn.codeweavers.com> Date: Fri, 29 Apr 2016 08:30:33 -0500 In-Reply-To: <1461852480-13803-1-git-send-email-alexhenrie24@gmail.com> References: <1461852480-13803-1-git-send-email-alexhenrie24@gmail.com> Signed-off-by: Andrew Eikum On Thu, Apr 28, 2016 at 08:08:00AM -0600, Alex Henrie wrote: > Cc: Andrew Eikum > > Signed-off-by: Alex Henrie > --- > 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 >