Fix potentially unaligned references in X11 device
Fixes #3125 Signed-off-by: John Nunley <dev@notgull.net>
This commit is contained in:
parent
b7e3649e8b
commit
b938fe9df5
1 changed files with 9 additions and 13 deletions
|
|
@ -28,7 +28,7 @@ use std::{
|
||||||
collections::{HashMap, HashSet},
|
collections::{HashMap, HashSet},
|
||||||
ffi::CStr,
|
ffi::CStr,
|
||||||
fmt,
|
fmt,
|
||||||
mem::{self, MaybeUninit},
|
mem::MaybeUninit,
|
||||||
ops::Deref,
|
ops::Deref,
|
||||||
os::{
|
os::{
|
||||||
raw::*,
|
raw::*,
|
||||||
|
|
@ -1052,12 +1052,10 @@ impl Device {
|
||||||
|
|
||||||
if Device::physical_device(info) {
|
if Device::physical_device(info) {
|
||||||
// Identify scroll axes
|
// Identify scroll axes
|
||||||
for class_ptr in Device::classes(info) {
|
for &class_ptr in Device::classes(info) {
|
||||||
let class = unsafe { &**class_ptr };
|
let ty = unsafe { (*class_ptr)._type };
|
||||||
if class._type == ffi::XIScrollClass {
|
if ty == ffi::XIScrollClass {
|
||||||
let info = unsafe {
|
let info = unsafe { &*(class_ptr as *const ffi::XIScrollClassInfo) };
|
||||||
mem::transmute::<&ffi::XIAnyClassInfo, &ffi::XIScrollClassInfo>(class)
|
|
||||||
};
|
|
||||||
scroll_axes.push((
|
scroll_axes.push((
|
||||||
info.number,
|
info.number,
|
||||||
ScrollAxis {
|
ScrollAxis {
|
||||||
|
|
@ -1085,12 +1083,10 @@ impl Device {
|
||||||
|
|
||||||
fn reset_scroll_position(&mut self, info: &ffi::XIDeviceInfo) {
|
fn reset_scroll_position(&mut self, info: &ffi::XIDeviceInfo) {
|
||||||
if Device::physical_device(info) {
|
if Device::physical_device(info) {
|
||||||
for class_ptr in Device::classes(info) {
|
for &class_ptr in Device::classes(info) {
|
||||||
let class = unsafe { &**class_ptr };
|
let ty = unsafe { (*class_ptr)._type };
|
||||||
if class._type == ffi::XIValuatorClass {
|
if ty == ffi::XIValuatorClass {
|
||||||
let info = unsafe {
|
let info = unsafe { &*(class_ptr as *const ffi::XIValuatorClassInfo) };
|
||||||
mem::transmute::<&ffi::XIAnyClassInfo, &ffi::XIValuatorClassInfo>(class)
|
|
||||||
};
|
|
||||||
if let Some(&mut (_, ref mut axis)) = self
|
if let Some(&mut (_, ref mut axis)) = self
|
||||||
.scroll_axes
|
.scroll_axes
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue