commit:     627c1e28477e081fa78c3d675daa0f17f2c247cb
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Oct  4 03:50:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Oct  4 03:50:37 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=627c1e28

gui-libs/wlroots: restore patch for 0.15.1

Closes: https://bugs.gentoo.org/874792
Fixes: d8562c999a5aaa91503c780e47c75e14bbaaf1b4
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...1-tinywl-dont-crash-upon-missing-keyboard.patch | 55 ++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git 
a/gui-libs/wlroots/files/wlroots-0.15.1-tinywl-dont-crash-upon-missing-keyboard.patch
 
b/gui-libs/wlroots/files/wlroots-0.15.1-tinywl-dont-crash-upon-missing-keyboard.patch
new file mode 100644
index 000000000000..cff1f72ca5ca
--- /dev/null
+++ 
b/gui-libs/wlroots/files/wlroots-0.15.1-tinywl-dont-crash-upon-missing-keyboard.patch
@@ -0,0 +1,55 @@
+From 7d950f3dac6cca62635d5e4ff2af33b35372f6db Mon Sep 17 00:00:00 2001
+From: Simon Ser <cont...@emersion.fr>
+Date: Sat, 19 Mar 2022 14:00:43 +0100
+Subject: [PATCH] tinywl: don't crash when there is no keyboard
+
+Running with WLR_BACKENDS=headless, there is no keyboard device.
+Avoid crashes like so:
+
+    ../tinywl/tinywl.c:136:2: runtime error: member access within null pointer 
of type 'struct wlr_keyboard'
+    ../tinywl/tinywl.c:136:2: runtime error: member access within null pointer 
of type 'struct wlr_keyboard'
+    AddressSanitizer:DEADLYSIGNAL
+    =================================================================
+    ==331107==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000120 
(pc 0x556ed03e4e99 bp 0x7ffce834bc10 sp 0x7ffce834bbb0 T0)
+    ==331107==The signal is caused by a READ memory access.
+    ==331107==Hint: address points to the zero page.
+        #0 0x556ed03e4e99 in focus_view ../tinywl/tinywl.c:136
+        #1 0x556ed03eb3be in xdg_toplevel_map ../tinywl/tinywl.c:603
+        #2 0x7f75d6f768db in wlr_signal_emit_safe ../util/signal.c:29
+        #3 0x7f75d6e9cac7 in xdg_surface_role_commit 
../types/xdg_shell/wlr_xdg_surface.c:315
+        #4 0x7f75d6eb6944 in surface_commit_state ../types/wlr_compositor.c:466
+        #5 0x7f75d6eb7b02 in surface_handle_commit 
../types/wlr_compositor.c:523
+        #6 0x7f75d5714d49  (/usr/lib/libffi.so.8+0x6d49)
+        #7 0x7f75d5714266  (/usr/lib/libffi.so.8+0x6266)
+        #8 0x7f75d68cb322  (/usr/lib/libwayland-server.so.0+0xd322)
+        #9 0x7f75d68c65cb  (/usr/lib/libwayland-server.so.0+0x85cb)
+        #10 0x7f75d68c91c9 in wl_event_loop_dispatch 
(/usr/lib/libwayland-server.so.0+0xb1c9)
+        #11 0x7f75d68c6d36 in wl_display_run 
(/usr/lib/libwayland-server.so.0+0x8d36)
+        #12 0x556ed03eef55 in main ../tinywl/tinywl.c:905
+        #13 0x7f75d5d2330f in __libc_start_call_main 
(/usr/lib/libc.so.6+0x2d30f)
+        #14 0x7f75d5d233c0 in __libc_start_main@GLIBC_2.2.5 
(/usr/lib/libc.so.6+0x2d3c0)
+        #15 0x556ed03e46e4 in _start 
(/home/simon/src/wlroots/build/tinywl/tinywl+0x136e4)
+---
+ tinywl/tinywl.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/tinywl/tinywl.c b/tinywl/tinywl.c
+index dd442aac..8796e9df 100644
+--- a/tinywl/tinywl.c
++++ b/tinywl/tinywl.c
+@@ -130,8 +130,10 @@ static void focus_view(struct tinywl_view *view, struct 
wlr_surface *surface) {
+        * track of this and automatically send key events to the appropriate
+        * clients without additional work on your part.
+        */
+-      wlr_seat_keyboard_notify_enter(seat, view->xdg_surface->surface,
+-              keyboard->keycodes, keyboard->num_keycodes, 
&keyboard->modifiers);
++      if (keyboard != NULL) {
++              wlr_seat_keyboard_notify_enter(seat, view->xdg_surface->surface,
++                      keyboard->keycodes, keyboard->num_keycodes, 
&keyboard->modifiers);
++      }
+ }
+ 
+ static void keyboard_handle_modifiers(
+-- 
+2.36.1
+

Reply via email to