Nikolay Sivov : mfplat: Fix optional buffer argument handling in ConvertToContiguousBuffer().

Alexandre Julliard julliard at winehq.org
Tue Mar 17 17:21:09 CDT 2020


Module: wine
Branch: master
Commit: eead400ba7235fa53f76d4bac6cfe2611318e1dc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=eead400ba7235fa53f76d4bac6cfe2611318e1dc

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Mar 17 17:10:30 2020 +0300

mfplat: Fix optional buffer argument handling in ConvertToContiguousBuffer().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplat/buffer.c       |  2 +-
 dlls/mfplat/tests/mfplat.c | 20 ++++++++++++++++++--
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c
index 1727ff1e90..7c123e3e65 100644
--- a/dlls/mfplat/buffer.c
+++ b/dlls/mfplat/buffer.c
@@ -1235,7 +1235,7 @@ static HRESULT WINAPI sample_ConvertToContiguousBuffer(IMFSample *iface, IMFMedi
         }
     }
 
-    if (SUCCEEDED(hr))
+    if (SUCCEEDED(hr) && buffer)
     {
         *buffer = sample->buffers[0];
         IMFMediaBuffer_AddRef(*buffer);
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 21105f5ce5..c5ed883dfa 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -1993,6 +1993,9 @@ static void test_sample(void)
     ok(buffer2 == buffer, "Unexpected buffer instance.\n");
     IMFMediaBuffer_Release(buffer2);
 
+    hr = IMFSample_ConvertToContiguousBuffer(sample, NULL);
+    ok(hr == S_OK, "Failed to convert, hr %#x.\n", hr);
+
     hr = IMFSample_ConvertToContiguousBuffer(sample, &buffer2);
     ok(hr == S_OK, "Failed to convert, hr %#x.\n", hr);
     ok(buffer2 == buffer, "Unexpected buffer instance.\n");
@@ -2026,8 +2029,21 @@ static void test_sample(void)
     ok(hr == S_OK, "Failed to get maximum length, hr %#x.\n", hr);
     ok(length == 7, "Unexpected length %u.\n", length);
 
-    if (SUCCEEDED(hr))
-        IMFMediaBuffer_Release(buffer3);
+    IMFMediaBuffer_Release(buffer3);
+
+    hr = IMFSample_GetBufferCount(sample, &count);
+    ok(hr == S_OK, "Failed to get buffer count, hr %#x.\n", hr);
+    ok(count == 1, "Unexpected buffer count %u.\n", count);
+
+    hr = IMFSample_AddBuffer(sample, buffer);
+    ok(hr == S_OK, "Failed to add buffer, hr %#x.\n", hr);
+
+    hr = IMFSample_GetBufferCount(sample, &count);
+    ok(hr == S_OK, "Failed to get buffer count, hr %#x.\n", hr);
+    ok(count == 2, "Unexpected buffer count %u.\n", count);
+
+    hr = IMFSample_ConvertToContiguousBuffer(sample, NULL);
+    ok(hr == S_OK, "Failed to convert, hr %#x.\n", hr);
 
     hr = IMFSample_GetBufferCount(sample, &count);
     ok(hr == S_OK, "Failed to get buffer count, hr %#x.\n", hr);




More information about the wine-cvs mailing list