From faef79be75ca69eef7fe718776ba5cfbd7cc9bc3 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 13 May 2025 20:10:32 +0200 Subject: [PATCH] glamor: protect from NULL return of GetPictureScreenIfSet() GetPictureScreenIfSet() is designed that NULL can be returned. Even though it should not happen in this particular case, better be prepared for that, instead of just segfault'ing. Signed-off-by: Enrico Weigelt, metux IT consult --- glamor/glamor.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index 04bb04ba1..0f6a84617 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -905,7 +905,6 @@ glamor_close_screen(ScreenPtr screen) { glamor_screen_private *glamor_priv; PixmapPtr screen_pixmap; - PictureScreenPtr ps = GetPictureScreenIfSet(screen); glamor_priv = glamor_get_screen_private(screen); glamor_sync_close(screen); @@ -923,11 +922,14 @@ glamor_close_screen(ScreenPtr screen) screen->BitmapToRegion = glamor_priv->saved_procs.bitmap_to_region; screen->BlockHandler = glamor_priv->saved_procs.block_handler; - ps->Composite = glamor_priv->saved_procs.composite; - ps->Trapezoids = glamor_priv->saved_procs.trapezoids; - ps->Triangles = glamor_priv->saved_procs.triangles; - ps->CompositeRects = glamor_priv->saved_procs.composite_rects; - ps->Glyphs = glamor_priv->saved_procs.glyphs; + PictureScreenPtr ps = GetPictureScreenIfSet(screen); + if (ps) { + ps->Composite = glamor_priv->saved_procs.composite; + ps->Trapezoids = glamor_priv->saved_procs.trapezoids; + ps->Triangles = glamor_priv->saved_procs.triangles; + ps->CompositeRects = glamor_priv->saved_procs.composite_rects; + ps->Glyphs = glamor_priv->saved_procs.glyphs; + } screen_pixmap = screen->GetScreenPixmap(screen); glamor_pixmap_destroy_fbo(screen_pixmap);