Module: wine Branch: master Commit: 18522a0594b1dc63880063520ae48707738ed346 URL: https://gitlab.winehq.org/wine/wine/-/commit/18522a0594b1dc63880063520ae4870...
Author: Fabian Maurer dark.shadow4@web.de Date: Sun Nov 19 22:26:55 2023 +0100
winex11: Free correct pointer when using xf86vm.
After allocation the pointer gets shifted by sizeof(xf86vm_modes), so we have to undo that before calling free.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55909
---
dlls/winex11.drv/xvidmode.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/xvidmode.c b/dlls/winex11.drv/xvidmode.c index 399d5e90e1e..fd9b1e7e8b1 100644 --- a/dlls/winex11.drv/xvidmode.c +++ b/dlls/winex11.drv/xvidmode.c @@ -159,11 +159,12 @@ static void xf86vm_free_modes(DEVMODEW *modes)
if (modes) { + BYTE *ptr = (BYTE *)modes - sizeof(xf86vm_modes); assert(modes[0].dmDriverExtra == sizeof(XF86VidModeModeInfo *)); - memcpy(&xf86vm_modes, (BYTE *)modes - sizeof(xf86vm_modes), sizeof(xf86vm_modes)); + memcpy(&xf86vm_modes, ptr, sizeof(xf86vm_modes)); XFree(xf86vm_modes); + free(ptr); } - free(modes); }
static BOOL xf86vm_get_current_mode(x11drv_settings_id id, DEVMODEW *mode)