From d639633532a9756e2f0210f5ccddeeb71331e027 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 914c414a1..ac169cab9 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);