mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Fix error handling in KMSDRM_AddDisplay
Add missing `goto cleanup` and check that `dispdata` is not NULL before dereferencing it.
This commit is contained in:
parent
2df9c15e96
commit
8481229ff7
@ -517,6 +517,7 @@ void KMSDRM_AddDisplay (_THIS, drmModeConnector *connector, drmModeRes *resource
|
|||||||
dispdata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
|
dispdata = (SDL_DisplayData *) SDL_calloc(1, sizeof(SDL_DisplayData));
|
||||||
if (!dispdata) {
|
if (!dispdata) {
|
||||||
ret = SDL_OutOfMemory();
|
ret = SDL_OutOfMemory();
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize some of the members of the new display's driverdata
|
/* Initialize some of the members of the new display's driverdata
|
||||||
@ -644,15 +645,15 @@ cleanup:
|
|||||||
KMSDRM_drmModeFreeEncoder(encoder);
|
KMSDRM_drmModeFreeEncoder(encoder);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* Error (complete) cleanup */
|
/* Error (complete) cleanup */
|
||||||
if (dispdata->connector) {
|
|
||||||
KMSDRM_drmModeFreeConnector(dispdata->connector);
|
|
||||||
dispdata->connector = NULL;
|
|
||||||
}
|
|
||||||
if (dispdata->crtc) {
|
|
||||||
KMSDRM_drmModeFreeCrtc(dispdata->crtc);
|
|
||||||
dispdata->crtc = NULL;
|
|
||||||
}
|
|
||||||
if (dispdata) {
|
if (dispdata) {
|
||||||
|
if (dispdata->connector) {
|
||||||
|
KMSDRM_drmModeFreeConnector(dispdata->connector);
|
||||||
|
dispdata->connector = NULL;
|
||||||
|
}
|
||||||
|
if (dispdata->crtc) {
|
||||||
|
KMSDRM_drmModeFreeCrtc(dispdata->crtc);
|
||||||
|
dispdata->crtc = NULL;
|
||||||
|
}
|
||||||
SDL_free(dispdata);
|
SDL_free(dispdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user