From e88edac60067d8422c6d3e8e78026e9ccfcf3408 Mon Sep 17 00:00:00 2001 From: Lionel Ulmer <lionel.ulmer@free.fr> Date: Tue, 26 Feb 2002 00:36:21 +0000 Subject: [PATCH] Fix crash in the X11 HAL when setting a NULL palette to a surface. --- dlls/ddraw/dsurface/hal.c | 2 +- dlls/x11drv/x11ddraw.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/ddraw/dsurface/hal.c b/dlls/ddraw/dsurface/hal.c index ca6d3640f4e..9948a8452a7 100644 --- a/dlls/ddraw/dsurface/hal.c +++ b/dlls/ddraw/dsurface/hal.c @@ -223,7 +223,7 @@ void HAL_DirectDrawSurface_set_palette(IDirectDrawSurfaceImpl* This, DIB_DirectDrawSurface_set_palette(This, pal); data.lpDD = dd_gbl; data.lpDDSurface = &This->local; - data.lpDDPalette = &pal->global; + data.lpDDPalette = (pal != NULL ? &pal->global : NULL); data.ddRVal = 0; data.Attach = TRUE; /* what's this? */ data.SetPalette = dd_gbl->lpDDCBtmp->HALDDSurface.SetPalette; diff --git a/dlls/x11drv/x11ddraw.c b/dlls/x11drv/x11ddraw.c index 5175f164e54..901485b1366 100644 --- a/dlls/x11drv/x11ddraw.c +++ b/dlls/x11drv/x11ddraw.c @@ -159,12 +159,14 @@ static DWORD PASCAL X11DRV_DDHAL_DestroySurface(LPDDHAL_DESTROYSURFACEDATA data) static DWORD PASCAL X11DRV_DDHAL_SetPalette(LPDDHAL_SETPALETTEDATA data) { - Colormap pal = data->lpDDPalette->u1.dwReserved1; - if (pal) { + if (data->lpDDPalette && data->lpDDPalette->u1.dwReserved1) { if (data->lpDDSurface == X11DRV_DD_Primary) { FIXME("stub\n"); /* we should probably find the ddraw window (maybe data->lpDD->lpExclusiveOwner->hWnd), - * and attach the palette to it */ + * and attach the palette to it + * + * Colormap pal = data->lpDDPalette->u1.dwReserved1; + */ } } data->ddRVal = DD_OK; -- GitLab