From 46991ab9aac99c5ba55b735396f32447e75a6320 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sat, 17 Oct 2015 20:53:16 +0100 Subject: [PATCH] pipe-loader: teardown the winsys, if create_screen fails i.e. plug some (hard to hit) memory leaks. v2: fix rebase fallout - really teardown the winsys (Brian) Signed-off-by: Emil Velikov Acked-by: Rob Clark --- src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c index 816ff1c85d3..85e06d312ed 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c @@ -240,8 +240,13 @@ static struct pipe_screen * pipe_loader_sw_create_screen(struct pipe_loader_device *dev) { struct pipe_loader_sw_device *sdev = pipe_loader_sw_device(dev); + struct pipe_screen *screen; - return sdev->dd->create_screen(sdev->ws); + screen = sdev->dd->create_screen(sdev->ws); + if (!screen) + sdev->ws->destroy(sdev->ws); + + return screen; } static struct pipe_loader_ops pipe_loader_sw_ops = { -- 2.30.2