From d2d5573ee49fe840b298ca03ab42d58ed41ef70d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 22 Dec 2003 01:21:20 +0000 Subject: [PATCH] From: Thomas Jarosch To: Ryan C. Gordon Subject: SDL: DirectFB videodriver segfault Date: Sun, 21 Dec 2003 20:40:14 +0100 Hi Ryan, attached is a patch to fix a segfault in DirectFB_VideoQuit. When SetVideoMode never gets called (f.e. wrong command line arguments for "testsprite"), this->screen->hwdata is NULL. Cheers, Thomas --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40760 --- src/video/directfb/SDL_DirectFB_video.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/video/directfb/SDL_DirectFB_video.c b/src/video/directfb/SDL_DirectFB_video.c index 57f40d1a9..85dff203a 100644 --- a/src/video/directfb/SDL_DirectFB_video.c +++ b/src/video/directfb/SDL_DirectFB_video.c @@ -1075,14 +1075,21 @@ int DirectFB_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) void DirectFB_VideoQuit(_THIS) { struct DirectFBEnumRect *rect = enumlist; - IDirectFBSurface *surface = this->screen->hwdata->surface; - IDirectFBPalette *palette = this->screen->hwdata->palette; - if (palette) - palette->Release (palette); + if (this->screen->hwdata) + { + IDirectFBSurface *surface = this->screen->hwdata->surface; + IDirectFBPalette *palette = this->screen->hwdata->palette; - if (surface) - surface->Release (surface); + if (palette) + palette->Release (palette); + + if (surface) + surface->Release (surface); + + this->screen->hwdata->surface = NULL; + this->screen->hwdata->palette = NULL; + } if (HIDDEN->c2frame) {