From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/mfreadwrite/tests/mfplat.c | 10 ++++++++++ dlls/mfreadwrite/writer.c | 13 +++++++++++++ 2 files changed, 23 insertions(+)
diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index 95f615767d5..14e92cceab2 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -1299,8 +1299,18 @@ static void test_sink_writer(void) hr = MFCreateSinkWriterFromURL(NULL, NULL, NULL, NULL); ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+ writer = (void *)0xdeadbeef; hr = MFCreateSinkWriterFromURL(NULL, NULL, NULL, &writer); ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(!writer, "Unexpected pointer %p.\n", writer); + + hr = MFCreateSinkWriterFromMediaSink(NULL, NULL, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + + writer = (void *)0xdeadbeef; + hr = MFCreateSinkWriterFromMediaSink(NULL, NULL, &writer); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + ok(!writer, "Unexpected pointer %p.\n", writer); }
START_TEST(mfplat) diff --git a/dlls/mfreadwrite/writer.c b/dlls/mfreadwrite/writer.c index f4bd08b8cda..9e92e6f8f9e 100644 --- a/dlls/mfreadwrite/writer.c +++ b/dlls/mfreadwrite/writer.c @@ -186,6 +186,11 @@ HRESULT create_sink_writer_from_sink(IMFMediaSink *sink, IMFAttributes *attribut struct sink_writer *object; HRESULT hr;
+ *out = NULL; + + if (!sink) + return E_INVALIDARG; + object = malloc(sizeof(*object)); if (!object) return E_OUTOFMEMORY; @@ -205,6 +210,9 @@ HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *sink, IMFAttributes { TRACE("%p, %p, %p.\n", sink, attributes, writer);
+ if (!writer) + return E_INVALIDARG; + return create_sink_writer_from_sink(sink, attributes, &IID_IMFSinkWriter, (void **)writer); }
@@ -289,6 +297,8 @@ HRESULT create_sink_writer_from_url(const WCHAR *url, IMFByteStream *bytestream, CLSID clsid; HRESULT hr;
+ *out = NULL; + if (!url && !bytestream) return E_INVALIDARG;
@@ -332,5 +342,8 @@ HRESULT WINAPI MFCreateSinkWriterFromURL(const WCHAR *url, IMFByteStream *bytest { TRACE("%s, %p, %p, %p.\n", debugstr_w(url), bytestream, attributes, writer);
+ if (!writer) + return E_INVALIDARG; + return create_sink_writer_from_url(url, bytestream, attributes, &IID_IMFSinkWriter, (void **)writer); }