From 460bacade514944d5b30cefac54557d628798095 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Sun, 9 Jun 2024 00:49:00 +0200 Subject: [PATCH] fix sizeof usize assumed to be 8 (#143) closes #141 --- Cargo.lock | 1 + Cargo.toml | 1 + src/frontend/gtk.rs | 9 ++++----- src/frontend/gtk/window.rs | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bb7273f..929591c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1292,6 +1292,7 @@ dependencies = [ "async-trait", "clap", "core-graphics", + "endi", "env_logger", "futures", "futures-core", diff --git a/Cargo.toml b/Cargo.toml index b0da633..dda5c5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ once_cell = "1.19.0" num_enum = "0.7.2" hostname = "0.4.0" slab = "0.4.9" +endi = "1.1.0" [target.'cfg(unix)'.dependencies] libc = "0.2.148" diff --git a/src/frontend/gtk.rs b/src/frontend/gtk.rs index 9588fad..a3dad8c 100644 --- a/src/frontend/gtk.rs +++ b/src/frontend/gtk.rs @@ -11,6 +11,7 @@ use std::{ use crate::frontend::{gtk::window::Window, FrontendRequest}; use adw::Application; +use endi::{Endian, ReadBytes}; use gtk::{ gdk::Display, glib::clone, prelude::*, subclass::prelude::ObjectSubclassIsExt, IconTheme, }; @@ -85,16 +86,14 @@ fn build_ui(app: &Application) { gio::spawn_blocking(move || { match loop { // read length - let mut len = [0u8; 8]; - match rx.read_exact(&mut len) { - Ok(_) => (), + let len = match rx.read_u64(Endian::Big) { + Ok(l) => l, Err(e) if e.kind() == ErrorKind::UnexpectedEof => break Ok(()), Err(e) => break Err(e), }; - let len = usize::from_be_bytes(len); // read payload - let mut buf = vec![0u8; len]; + let mut buf = vec![0u8; len as usize]; match rx.read_exact(&mut buf) { Ok(_) => (), Err(e) if e.kind() == ErrorKind::UnexpectedEof => break Ok(()), diff --git a/src/frontend/gtk/window.rs b/src/frontend/gtk/window.rs index eef0e73..e3726a6 100644 --- a/src/frontend/gtk/window.rs +++ b/src/frontend/gtk/window.rs @@ -10,6 +10,7 @@ use std::net::TcpStream; use adw::prelude::*; use adw::subclass::prelude::*; +use endi::{Endian, WriteBytes}; use glib::{clone, Object}; use gtk::{ gio, @@ -265,8 +266,7 @@ impl Window { let mut stream = self.imp().stream.borrow_mut(); let stream = stream.as_mut().unwrap(); let bytes = json.as_bytes(); - let len = bytes.len().to_be_bytes(); - if let Err(e) = stream.write(&len) { + if let Err(e) = stream.write_u64(Endian::Big, bytes.len() as u64) { log::error!("error sending message: {e}"); }; if let Err(e) = stream.write(bytes) {