[PATCH 1/1] winevulkan: Propagate access violation from the Unix side.

Paul Gofman wine at gitlab.winehq.org
Thu May 19 14:53:33 CDT 2022


From: Paul Gofman <pgofman at codeweavers.com>

---
 dlls/winevulkan/vulkan_loader.h | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/winevulkan/vulkan_loader.h b/dlls/winevulkan/vulkan_loader.h
index 2efa56e0193..62ab59e32d2 100644
--- a/dlls/winevulkan/vulkan_loader.h
+++ b/dlls/winevulkan/vulkan_loader.h
@@ -98,9 +98,19 @@ struct wine_vk_debug_report_params
 extern const struct unix_funcs *unix_funcs;
 extern unixlib_handle_t unix_handle DECLSPEC_HIDDEN;
 
-static inline NTSTATUS vk_unix_call(enum unix_call code, void *params)
+#define vk_unix_call(code, params) vk_unix_call_(__FUNCTION__, code, params)
+static inline NTSTATUS vk_unix_call_(const char * function, enum unix_call code, void *params)
 {
-    return __wine_unix_call(unix_handle, code, params);
+    NTSTATUS ret;
+    if ((ret = __wine_unix_call(unix_handle, code, params)) == STATUS_ACCESS_VIOLATION)
+    {
+        volatile int *null_ptr = NULL;
+
+        MESSAGE("wine: winevulkan: access violation calling %u from %s.\n", code, function);
+        /* Propagate access violation. */
+        *null_ptr = 1;
+    }
+    return ret;
 }
 
 struct unix_funcs
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/99



More information about the wine-devel mailing list