summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-09-21 09:49:05 -0700
committerKeith Packard <keithp@keithp.com>2014-10-02 16:35:58 -0700
commitcccba52d152a7d233c0b762a54844ecef831483e (patch)
treee640bd9966ec56c66fb6b267a4f41b8f6d3fabee
parent95a5b92e37f73f497d547fd91c543c16d2cc73de (diff)
Abort xi2 tests if ActivateDevice() fails
I was getting segfaults in xi2 tests from trying to copy XKB keyboard state to NULL pointers with a stack of: key=key@entry=0) at xkbActions.c:1189 sendevent=sendevent@entry=0 '\000') at devices.c:420 at protocol-xiquerydevice.c:338 which turned out to be due to xkbcomp failure, which was logged in the test logs as: XKB: Failed to compile keymap Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config. but which was overlooked because the ActivateDevice() return code wasn't checked and the tests went forward assuming the structures were all correctly initialized. This catches the failure closer to the point of failure, to save debugging time. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--test/xi2/protocol-common.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/test/xi2/protocol-common.c b/test/xi2/protocol-common.c
index 9a429e49f..64a5777d0 100644
--- a/test/xi2/protocol-common.c
+++ b/test/xi2/protocol-common.c
@@ -137,6 +137,7 @@ init_devices(void)
{
ClientRec client;
struct devices local_devices;
+ int ret;
client = init_client(0, NULL);
@@ -145,15 +146,20 @@ init_devices(void)
inputInfo.pointer = local_devices.vcp;
inputInfo.keyboard = local_devices.vck;
- ActivateDevice(local_devices.vcp, FALSE);
- ActivateDevice(local_devices.vck, FALSE);
+ ret = ActivateDevice(local_devices.vcp, FALSE);
+ assert(ret == Success);
+ /* This may fail if xkbcomp fails or xkb-config is not found. */
+ ret = ActivateDevice(local_devices.vck, FALSE);
+ assert(ret == Success);
EnableDevice(local_devices.vcp, FALSE);
EnableDevice(local_devices.vck, FALSE);
AllocDevicePair(&client, "", &local_devices.mouse, &local_devices.kbd,
TestPointerProc, CoreKeyboardProc, FALSE);
- ActivateDevice(local_devices.mouse, FALSE);
- ActivateDevice(local_devices.kbd, FALSE);
+ ret = ActivateDevice(local_devices.mouse, FALSE);
+ assert(ret == Success);
+ ret = ActivateDevice(local_devices.kbd, FALSE);
+ assert(ret == Success);
EnableDevice(local_devices.mouse, FALSE);
EnableDevice(local_devices.kbd, FALSE);