From fe2cc8d86c04e206d2e40e9c299ba5018fa72fe6 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Wed, 14 Oct 2020 23:01:04 +0300 Subject: [PATCH] OS2_VideoQuit(): avoid double free()ing of displays. Our caller SDL_VideoQuit() already frees display_modes, driverdata, etc. Noticed in bitwiseworks' version at https://github.com/bitwiseworks/SDL2-os2 --- src/video/os2/SDL_os2video.c | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/video/os2/SDL_os2video.c b/src/video/os2/SDL_os2video.c index 60c112a89..aab9eb2cc 100644 --- a/src/video/os2/SDL_os2video.c +++ b/src/video/os2/SDL_os2video.c @@ -1612,36 +1612,13 @@ static int OS2_VideoInit(_THIS) static void OS2_VideoQuit(_THIS) { PSDL_VideoData pVData = (PSDL_VideoData)_this->driverdata; - ULONG ulDisplayIdx, ulModeIdx; - SDL_VideoDisplay *pSDLDisplay; OS2_QuitMouse( _this ); WinDestroyMsgQueue( pVData->hmq ); WinTerminate( pVData->hab ); - // We support only one display. Free all listed displays data for the future. - for( ulDisplayIdx = 0; ulDisplayIdx < _this->num_displays; ulDisplayIdx++ ) - { - pSDLDisplay = &_this->displays[ulDisplayIdx]; - - // Free video mode data (PMODEDATA). - if ( pSDLDisplay->desktop_mode.driverdata != NULL ) - SDL_free( pSDLDisplay->desktop_mode.driverdata ); - - // We support only one mode - desktop_mode. Free all modes for the future. - for( ulModeIdx = 0; ulModeIdx < pSDLDisplay->num_display_modes; - ulModeIdx++ ) - if ( pSDLDisplay->display_modes[ulModeIdx].driverdata != NULL ) - SDL_free( pSDLDisplay->display_modes[ulModeIdx].driverdata ); - - // Free display data (PDISPLAYDATA). - if ( pSDLDisplay->driverdata != NULL ) - { - SDL_free( pSDLDisplay->driverdata ); - pSDLDisplay->driverdata = NULL; - } - } + /* our caller SDL_VideoQuit() already frees display_modes, driverdata, etc. */ } static int OS2_GetDisplayBounds(_THIS, SDL_VideoDisplay *display,