diff --git a/.pick_status.json b/.pick_status.json index c3fd626fd07..d46e54a1ddf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2776,7 +2776,7 @@ "description": "Revert \"egl/dri2: Don't dlclose() the driver on dri2_load_driver_common failure\"", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "1b87f4058de84d7a0bb4ead0c4f4b024d4cce8fb" }, diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 4c0e53ed57e..2a216ef1c80 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -784,9 +784,11 @@ dri2_load_driver_common(_EGLDisplay *disp, if (!extensions) return EGL_FALSE; - if (!dri2_bind_extensions(dri2_dpy, driver_extensions, extensions, false)) + if (!dri2_bind_extensions(dri2_dpy, driver_extensions, extensions, false)) { + dlclose(dri2_dpy->driver); + dri2_dpy->driver = NULL; return EGL_FALSE; - + } dri2_dpy->driver_extensions = extensions; dri2_bind_extensions(dri2_dpy, optional_driver_extensions, extensions, true);