x11: fix undefined behavior when copying the coordinates of ptr movements actions
Left shift of a negative integer. For some reason the protocol representation here got really botched (in the spec it is just a nice and simple INT16). Signed-off-by: Ran Benita <ran234@gmail.com>master
parent
f8134c8503
commit
a9ace75f64
|
@ -31,6 +31,7 @@ foreach cflag: [
|
|||
'-Wdate-time',
|
||||
'-Wwrite-strings',
|
||||
'-Wno-documentation-deprecated-sync',
|
||||
'-fsanitize-undefined-trap-on-error',
|
||||
]
|
||||
if cc.has_argument(cflag)
|
||||
add_project_arguments(cflag, language: 'c')
|
||||
|
|
|
@ -218,8 +218,8 @@ translate_action(union xkb_action *action, const xcb_xkb_action_t *wire)
|
|||
case XCB_XKB_SA_TYPE_MOVE_PTR:
|
||||
action->type = ACTION_TYPE_PTR_MOVE;
|
||||
|
||||
action->ptr.x = (wire->moveptr.xLow | (wire->moveptr.xHigh << 8));
|
||||
action->ptr.y = (wire->moveptr.yLow | (wire->moveptr.yHigh << 8));
|
||||
action->ptr.x = (int16_t) (wire->moveptr.xLow | ((uint16_t) wire->moveptr.xHigh << 8));
|
||||
action->ptr.y = (int16_t) (wire->moveptr.yLow | ((uint16_t) wire->moveptr.yHigh << 8));
|
||||
|
||||
if (!(wire->moveptr.flags & XCB_XKB_SA_MOVE_PTR_FLAG_NO_ACCELERATION))
|
||||
action->ptr.flags |= ACTION_ACCEL;
|
||||
|
|
Loading…
Reference in New Issue