From f0d8712275d2ca1b27d7022acf48cde647bdacd5 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Thu, 23 Jan 2025 18:43:24 +0800 Subject: Clean up UnityPlayer.dll detection from my_mmap64 (#2286) --- src/tools/wine_tools.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/tools') diff --git a/src/tools/wine_tools.c b/src/tools/wine_tools.c index 96978bed..ffbebdf2 100644 --- a/src/tools/wine_tools.c +++ b/src/tools/wine_tools.c @@ -149,3 +149,25 @@ void dynarec_wine_prereserve() #endif } #endif + +void detect_unityplayer(int fd) +{ + static int unityplayer_detected = 0; + if (fd > 0 && BOX64ENV(unityplayer) && !unityplayer_detected) { + char filename[4096]; + char buf[128]; + sprintf(buf, "/proc/self/fd/%d", fd); + ssize_t r = readlink(buf, filename, sizeof(filename) - 1); + if (r != -1) filename[r] = 0; + if (r > 0 && strlen(filename) > strlen("UnityPlayer.dll") && !strcasecmp(filename + strlen(filename) - strlen("UnityPlayer.dll"), "UnityPlayer.dll")) { + printf_log(LOG_NONE, "Detected UnityPlayer.dll\n"); +#ifdef DYNAREC + if (!BOX64ENV(dynarec_strongmem)) { + SET_BOX64ENV(dynarec_strongmem, 1); + PrintEnvVariables(); + } +#endif + unityplayer_detected = 1; + } + } +} \ No newline at end of file -- cgit 1.4.1