Giovanni Mascellani : mfplat: Fix buffer reading with IMF2DBuffer::Lock().

Alexandre Julliard julliard at winehq.org
Thu Mar 17 17:18:31 CDT 2022


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

Author: Giovanni Mascellani <gmascellani at codeweavers.com>
Date:   Tue Mar 15 14:29:18 2022 +0100

mfplat: Fix buffer reading with IMF2DBuffer::Lock().

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

---

 dlls/mfplat/buffer.c       | 4 ++++
 dlls/mfplat/tests/mfplat.c | 1 -
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c
index 2ec714c1419..133af2af470 100644
--- a/dlls/mfplat/buffer.c
+++ b/dlls/mfplat/buffer.c
@@ -311,6 +311,10 @@ static HRESULT WINAPI memory_1d_2d_buffer_Lock(IMFMediaBuffer *iface, BYTE **dat
     {
         if (!(buffer->_2d.linear_buffer = malloc(ALIGN_SIZE(buffer->_2d.plane_size, MF_64_BYTE_ALIGNMENT))))
             hr = E_OUTOFMEMORY;
+
+        if (SUCCEEDED(hr))
+            copy_image(buffer, buffer->_2d.linear_buffer, buffer->_2d.width, buffer->data, buffer->_2d.pitch,
+                    buffer->_2d.width, buffer->_2d.height);
     }
 
     if (SUCCEEDED(hr))
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 7e72abbde22..16d24bbff51 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -5872,7 +5872,6 @@ static void test_MFCreate2DMediaBuffer(void)
     hr = IMFMediaBuffer_Lock(buffer, &data, NULL, NULL);
     ok(hr == S_OK, "Failed to lock buffer, hr %#lx.\n", hr);
 
-    todo_wine
     ok(memcmp(data, eight_bbs, sizeof(eight_bbs)) == 0, "Invalid data instead of 0xbb.\n");
 
     hr = IMFMediaBuffer_Unlock(buffer);




More information about the wine-cvs mailing list