[PATCH 3/8] winegstreamer: Make the wg_parser_push_data_params structure WoW64-compatible.

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


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

diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c
index fd73f79d365..37752a3078b 100644
--- a/dlls/winegstreamer/main.c
+++ b/dlls/winegstreamer/main.c
@@ -29,6 +29,8 @@
 
 static unixlib_handle_t unix_handle;
 
+#define u64_from_user_ptr(ptr) ((ULONGLONG)(uintptr_t)(ptr))
+
 WINE_DEFAULT_DEBUG_CHANNEL(quartz);
 
 DEFINE_GUID(GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
@@ -143,7 +145,7 @@ void wg_parser_push_data(wg_parser_t parser, const void *data, uint32_t size)
     struct wg_parser_push_data_params params =
     {
         .parser = parser,
-        .data = data,
+        .data_ptr = u64_from_user_ptr(data),
         .size = size,
     };
 
diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h
index aa2e3c820a5..6280b3427d2 100644
--- a/dlls/winegstreamer/unixlib.h
+++ b/dlls/winegstreamer/unixlib.h
@@ -173,7 +173,7 @@ struct wg_parser_get_next_read_offset_params
 struct wg_parser_push_data_params
 {
     wg_parser_t parser;
-    const void *data;
+    ULONGLONG data_ptr;
     UINT32 size;
 };
 
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index 7c9ba652125..1a4185a63b4 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -39,6 +39,8 @@
 
 #include "unixlib.h"
 
+#define u64_to_user_ptr(u) ((void *)(uintptr_t)(u))
+
 typedef enum
 {
     GST_AUTOPLUG_SELECT_TRY,
@@ -602,7 +604,7 @@ static NTSTATUS wg_parser_push_data(void *args)
 {
     const struct wg_parser_push_data_params *params = args;
     struct wg_parser *parser = get_wg_parser(params->parser);
-    const void *data = params->data;
+    const void *data = u64_to_user_ptr(params->data_ptr);
     uint32_t size = params->size;
 
     pthread_mutex_lock(&parser->mutex);
-- 
2.34.1




More information about the wine-devel mailing list