From 7da74eb5be9511d472c72e4ed17e9ffa84f53fbc Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Wed, 17 Aug 2022 14:59:23 -0400 Subject: [PATCH] wayland: Never commit with an undefined window title If libdecor performs a commit with the frame title being undefined, a crash can occur within the library or its plugins. Always ensure that the title is set to a valid string to avoid this. --- src/video/wayland/SDL_waylandwindow.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 571bce047..68d2d087b 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -2069,26 +2069,25 @@ void Wayland_SetWindowTitle(_THIS, SDL_Window * window) { SDL_WindowData *wind = window->driverdata; SDL_VideoData *viddata = _this->driverdata; + const char *title = window->title ? window->title : ""; if (WINDOW_IS_XDG_POPUP(window)) { return; } - if (window->title != NULL) { #ifdef HAVE_LIBDECOR_H - if (WINDOW_IS_LIBDECOR(viddata, window)) { - if (wind->shell_surface.libdecor.frame == NULL) { - return; /* Can't do anything yet, wait for ShowWindow */ - } - libdecor_frame_set_title(wind->shell_surface.libdecor.frame, window->title); - } else + if (WINDOW_IS_LIBDECOR(viddata, window)) { + if (wind->shell_surface.libdecor.frame == NULL) { + return; /* Can't do anything yet, wait for ShowWindow */ + } + libdecor_frame_set_title(wind->shell_surface.libdecor.frame, title); + } else #endif if (viddata->shell.xdg) { - if (wind->shell_surface.xdg.roleobj.toplevel == NULL) { - return; /* Can't do anything yet, wait for ShowWindow */ - } - xdg_toplevel_set_title(wind->shell_surface.xdg.roleobj.toplevel, window->title); + if (wind->shell_surface.xdg.roleobj.toplevel == NULL) { + return; /* Can't do anything yet, wait for ShowWindow */ } + xdg_toplevel_set_title(wind->shell_surface.xdg.roleobj.toplevel, title); } WAYLAND_wl_display_flush(viddata->display);