[PATCH 4/8] winegstreamer: Make the wg_parser_stream_copy_buffer_params structure WoW64-compatible.

Zebediah Figura zfigura at codeweavers.com
Fri Dec 10 14:52:14 CST 2021


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 dlls/winegstreamer/main.c      | 2 +-
 dlls/winegstreamer/unixlib.h   | 2 +-
 dlls/winegstreamer/wg_parser.c | 3 ++-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c
index 37752a3078b..10f71e6c303 100644
--- a/dlls/winegstreamer/main.c
+++ b/dlls/winegstreamer/main.c
@@ -224,7 +224,7 @@ bool wg_parser_stream_copy_buffer(wg_parser_stream_t stream,
     struct wg_parser_stream_copy_buffer_params params =
     {
         .stream = stream,
-        .data = data,
+        .data_ptr = u64_from_user_ptr(data),
         .offset = offset,
         .size = size,
     };
diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h
index 6280b3427d2..01004aaffc7 100644
--- a/dlls/winegstreamer/unixlib.h
+++ b/dlls/winegstreamer/unixlib.h
@@ -216,7 +216,7 @@ struct wg_parser_stream_get_event_params
 struct wg_parser_stream_copy_buffer_params
 {
     wg_parser_stream_t stream;
-    void *data;
+    ULONGLONG data_ptr;
     UINT32 offset;
     UINT32 size;
 };
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 1a4185a63b4..e661ea9bee9 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -711,6 +711,7 @@ static NTSTATUS wg_parser_stream_copy_buffer(void *args)
 {
     const struct wg_parser_stream_copy_buffer_params *params = args;
     struct wg_parser_stream *stream = get_wg_parser_stream(params->stream);
+    void *data = u64_to_user_ptr(params->data_ptr);
     struct wg_parser *parser = stream->parser;
     uint32_t offset = params->offset;
     uint32_t size = params->size;
@@ -726,7 +727,7 @@ static NTSTATUS wg_parser_stream_copy_buffer(void *args)
     assert(stream->event.type == WG_PARSER_EVENT_BUFFER);
     assert(offset < stream->map_info.size);
     assert(offset + size <= stream->map_info.size);
-    memcpy(params->data, stream->map_info.data + offset, size);
+    memcpy(data, stream->map_info.data + offset, size);
 
     pthread_mutex_unlock(&parser->mutex);
     return S_OK;
-- 
2.34.1




More information about the wine-devel mailing list