egl/wayland: fix surface dma-buf feedback error exits

This fixes a leak that was introduced in 89d15b9a "egl/wayland: add
initial dma-buf feedback support".

Do not leak dri2_surf->wl_dmabuf_feedback when we have to bail out
because of allocation issues.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13985>
This commit is contained in:
Leandro Ribeiro 2021-11-30 13:40:26 -03:00 committed by Marge Bot
parent 81361490ef
commit 7c57346dfd
1 changed files with 8 additions and 4 deletions

View File

@ -722,10 +722,15 @@ dri2_wl_create_window_surface(_EGLDisplay *disp, _EGLConfig *conf,
&surface_dmabuf_feedback_listener,
dri2_surf);
if (dmabuf_feedback_init(&dri2_surf->pending_dmabuf_feedback) < 0)
if (dmabuf_feedback_init(&dri2_surf->pending_dmabuf_feedback) < 0) {
zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback);
goto cleanup_surf_wrapper;
if (dmabuf_feedback_init(&dri2_surf->dmabuf_feedback) < 0)
goto cleanup_pending_dmabuf_feedback;
}
if (dmabuf_feedback_init(&dri2_surf->dmabuf_feedback) < 0) {
dmabuf_feedback_fini(&dri2_surf->pending_dmabuf_feedback);
zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback);
goto cleanup_surf_wrapper;
}
if (roundtrip(dri2_dpy) < 0)
goto cleanup_dmabuf_feedback;
@ -748,7 +753,6 @@ dri2_wl_create_window_surface(_EGLDisplay *disp, _EGLConfig *conf,
if (dri2_surf->wl_dmabuf_feedback) {
zwp_linux_dmabuf_feedback_v1_destroy(dri2_surf->wl_dmabuf_feedback);
dmabuf_feedback_fini(&dri2_surf->dmabuf_feedback);
cleanup_pending_dmabuf_feedback:
dmabuf_feedback_fini(&dri2_surf->pending_dmabuf_feedback);
}
cleanup_surf_wrapper: