Skip to content

Commit

Permalink
X11: Fixed a memory leak when adding duplicate display modes.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Aug 7, 2015
1 parent fcc5940 commit ca46804
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions src/video/x11/SDL_x11modes.c
Expand Up @@ -748,7 +748,9 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display)
*modedata = *(SDL_DisplayModeData *)sdl_display->desktop_mode.driverdata;
}
mode.driverdata = modedata;
SDL_AddDisplayMode(sdl_display, &mode);
if (!SDL_AddDisplayMode(sdl_display, &mode)) {
SDL_free(modedata);
}
}
else if (!data->use_xrandr)
{
Expand All @@ -762,7 +764,9 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display)
*modedata = *(SDL_DisplayModeData *)sdl_display->desktop_mode.driverdata;
}
mode.driverdata = modedata;
SDL_AddDisplayMode(sdl_display, &mode);
if (!SDL_AddDisplayMode(sdl_display, &mode)) {
SDL_free(modedata);
}
}

}
Expand All @@ -787,9 +791,8 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display)
}
mode.driverdata = modedata;

if (SetXRandRModeInfo(display, res, output_info, output_info->modes[i], &mode)) {
SDL_AddDisplayMode(sdl_display, &mode);
} else {
if (!SetXRandRModeInfo(display, res, output_info, output_info->modes[i], &mode) ||
!SDL_AddDisplayMode(sdl_display, &mode)) {
SDL_free(modedata);
}
}
Expand Down Expand Up @@ -822,9 +825,7 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display)
}
mode.driverdata = modedata;

if (SetXVidModeModeInfo(modes[i], &mode)) {
SDL_AddDisplayMode(sdl_display, &mode);
} else {
if (!SetXVidModeModeInfo(modes[i], &mode) || !SDL_AddDisplayMode(sdl_display, &mode)) {
SDL_free(modedata);
}
}
Expand All @@ -842,7 +843,9 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display)
*modedata = *(SDL_DisplayModeData *)sdl_display->desktop_mode.driverdata;
}
mode.driverdata = modedata;
SDL_AddDisplayMode(sdl_display, &mode);
if (!SDL_AddDisplayMode(sdl_display, &mode)) {
SDL_free(modedata);
}
}
}

Expand Down

0 comments on commit ca46804

Please sign in to comment.