sway/input/cursor: fix crash on first stylus tap after reboot via null check

handle_tool_tip() previously used event->tool->data without checking
for NULL. When launching sway for the first time after a reboot, and
then tapping with a USI 2.0 stylus, the tool tip event is fired before
the tool proximity event. As event->tool is initialized during the tool
proximity handler handle_tool_proximity(), this was causing a crash.

The fix adds a NULL check before accessing the fields of
event->tool->data. In case of a NULL, a log message is emitted
indicating that the tool tip event fired before proximity. This logic is
identical to the logic in handle_tool_axis().

Fixes issue #8907
This commit is contained in:
Rex Fernando 2026-01-06 16:54:35 +01:00 committed by Simon Ser
parent 8224d5fcf8
commit 3c0588a44f

View file

@ -644,6 +644,11 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) {
cursor_handle_activity_from_device(cursor, &event->tablet->base);
struct sway_tablet_tool *sway_tool = event->tool->data;
if (!sway_tool) {
sway_log(SWAY_DEBUG, "tool tip before proximity");
return;
}
struct wlr_tablet_v2_tablet *tablet_v2 = sway_tool->tablet->tablet_v2;
struct sway_seat *seat = cursor->seat;