Alex Henrie : qedit: Return E_POINTER from Timeline_QueryInterface if ppv is NULL.
Module: wine Branch: master Commit: 501de13b6cab4743baf33680e812613f5fb21f7d URL: http://source.winehq.org/git/wine.git/?a=commit;h=501de13b6cab4743baf33680e8... Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Thu Apr 28 08:08:00 2016 -0600 qedit: Return E_POINTER from Timeline_QueryInterface if ppv is NULL. Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- 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 8c6ac5b..8293c8f 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;
participants (1)
-
Alexandre Julliard