sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 4b1a67fb6ccbb9d434a2be0139c930c2bf3ecf2c
parent db19d5e8cbb0d9cba91bb9183398ae451e0c987b
Author: Vladimir Panteleev <git@cy.md>
Date:   Sat, 10 Jan 2026 13:02:57 +0000

fix(swaybar/dbusmenu): fix null pointer dereference when loading icons

This change adds a null check when loading icons in the dbusmenu
code to avoid a segmentation fault when the icon surface fails to load.

Diffstat:
Mswaybar/tray/dbusmenu.c | 20+++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/swaybar/tray/dbusmenu.c b/swaybar/tray/dbusmenu.c @@ -421,15 +421,17 @@ static void draw_menu_items(cairo_t *cairo, struct swaybar_dbusmenu_menu *menu, if (icon_path) { cairo_surface_t *icon = load_image(icon_path); free(icon_path); - cairo_surface_t *icon_scaled = - cairo_image_surface_scale(icon, size, size); - cairo_surface_destroy(icon); - - cairo_set_source_surface(cairo, icon_scaled, x, y); - cairo_rectangle(cairo, x, y, size, size); - cairo_fill(cairo); - cairo_surface_destroy(icon_scaled); - is_icon_drawn = true; + if (icon) { + cairo_surface_t *icon_scaled = + cairo_image_surface_scale(icon, size, size); + cairo_surface_destroy(icon); + + cairo_set_source_surface(cairo, icon_scaled, x, y); + cairo_rectangle(cairo, x, y, size, size); + cairo_fill(cairo); + cairo_surface_destroy(icon_scaled); + is_icon_drawn = true; + } } } else if (item->icon_data) { cairo_surface_t *icon = cairo_image_surface_scale(item->icon_data, size, size);