egl/wayland: fix crash in dri2_initialize_wayland_swrast
When "dri2_wl_formats_init" fails in "dri2_initialize_wayland_swrast", the "dri2_display_destroy" function is called for clean up. However, the "dri2_egl_display" was not associated with the display in its "DriverData" field yet. The following cast in "dri2_display_destroy": struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); Expands to: _EGL_DRIVER_TYPECAST(drvname ## _display, _EGLDisplay, obj->DriverData) Crashing. Signed-off-by: José Expósito <jose.exposito89@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13972>
This commit is contained in:
parent
43258dc802
commit
4c3f8d3af8
|
@ -2605,11 +2605,12 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp)
|
|||
if (!dri2_dpy)
|
||||
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
|
||||
|
||||
dri2_dpy->fd = -1;
|
||||
disp->DriverData = (void *) dri2_dpy;
|
||||
|
||||
if (dri2_wl_formats_init(&dri2_dpy->formats) < 0)
|
||||
goto cleanup;
|
||||
|
||||
dri2_dpy->fd = -1;
|
||||
disp->DriverData = (void *) dri2_dpy;
|
||||
if (disp->PlatformDisplay == NULL) {
|
||||
dri2_dpy->wl_dpy = wl_display_connect(NULL);
|
||||
if (dri2_dpy->wl_dpy == NULL)
|
||||
|
|
Loading…
Reference in New Issue