Nov. 20, 2023
2:07 a.m.
Zhiyi Zhang (@zhiyi) commented about dlls/winex11.drv/xvidmode.c:
static void xf86vm_free_modes(DEVMODEW *modes) { XF86VidModeModeInfo **xf86vm_modes; + BYTE *ptr = (BYTE *)modes - sizeof(xf86vm_modes);
if (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); Let's move free(ptr) into the if (modes) branch or return early if modes is NULL.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/4434#note_52800