Alex Henrie : qedit: Return E_POINTER from Timeline_QueryInterface if ppv is NULL.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Apr 29 11:05:58 CDT 2016


Module: wine
Branch: master
Commit: 501de13b6cab4743baf33680e812613f5fb21f7d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=501de13b6cab4743baf33680e812613f5fb21f7d

Author: Alex Henrie <alexhenrie24 at 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 at gmail.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;




More information about the wine-cvs mailing list