From: Sebastian Lackner Subject: quartz: FileSource_Load should not fail on unknown file formats. (v3) Message-Id: Date: Fri, 29 Apr 2016 22:13:35 +0200 From: Michael Müller Signed-off-by: Michael Müller Signed-off-by: Sebastian Lackner --- Changes in v3: * Only test for success and not exact format. The previous version failed when Wine is compiled with gstreamer support. dlls/quartz/filesource.c | 5 +++-- dlls/quartz/tests/avisplitter.c | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index f0f85fd..269dd13 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -655,8 +655,9 @@ static HRESULT WINAPI FileSource_Load(IFileSourceFilter * iface, LPCOLESTR pszFi hr = GetClassMediaFile(pReader, pszFileName, &This->pmt->majortype, &This->pmt->subtype, NULL); if (FAILED(hr)) { - CoTaskMemFree(This->pmt); - This->pmt = NULL; + This->pmt->majortype = MEDIATYPE_Stream; + This->pmt->subtype = MEDIASUBTYPE_NULL; + hr = S_OK; } } else diff --git a/dlls/quartz/tests/avisplitter.c b/dlls/quartz/tests/avisplitter.c index aa938c1..78ca8b8 100644 --- a/dlls/quartz/tests/avisplitter.c +++ b/dlls/quartz/tests/avisplitter.c @@ -217,6 +217,12 @@ static void test_filesourcefilter(void) 12, &MEDIASUBTYPE_WAVE, }, + { + "unknown format", + "Hello World", + 11, + NULL, /* FIXME: should be &MEDIASUBTYPE_NULL */ + }, }; WCHAR path[MAX_PATH], temp[MAX_PATH]; IFileSourceFilter *filesource; @@ -277,10 +283,13 @@ static void test_filesourcefilter(void) ok(hr == S_OK, "expected S_OK, got %08x\n", hr); ok(!lstrcmpW(olepath, path), "expected %s, got %s\n", wine_dbgstr_w(path), wine_dbgstr_w(olepath)); - ok(IsEqualGUID(&mt.majortype, &MEDIATYPE_Stream), - "expected MEDIATYPE_Stream, got %s\n", wine_dbgstr_guid(&mt.majortype)); - ok(IsEqualGUID(&mt.subtype, tests[i].subtype), - "expected %s, got %s\n", wine_dbgstr_guid(tests[i].subtype), wine_dbgstr_guid(&mt.subtype)); + if (tests[i].subtype) + { + ok(IsEqualGUID(&mt.majortype, &MEDIATYPE_Stream), + "expected MEDIATYPE_Stream, got %s\n", wine_dbgstr_guid(&mt.majortype)); + ok(IsEqualGUID(&mt.subtype, tests[i].subtype), + "expected %s, got %s\n", wine_dbgstr_guid(tests[i].subtype), wine_dbgstr_guid(&mt.subtype)); + } CoTaskMemFree(olepath); IFileSourceFilter_Release(filesource); -- 2.8.0