From 15672536f687f24f530a8e2004ec3d7aeead8448 Mon Sep 17 00:00:00 2001 From: soruh Date: Sat, 10 Jun 2023 20:18:52 +0200 Subject: [PATCH] fix c string formatting --- src/packets.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/packets.rs b/src/packets.rs index 183d537..0738cfc 100644 --- a/src/packets.rs +++ b/src/packets.rs @@ -1,4 +1,4 @@ -use std::fmt::Debug; +use std::{ffi::CStr, fmt::Debug}; use bytemuck::{Pod, Zeroable}; use eyre::eyre; @@ -85,18 +85,18 @@ impl Debug for Packet { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let data = &self.data; - let str_data = std::str::from_utf8(&data[..data.len().saturating_sub(1)]).ok(); + let mut debugger = f.debug_struct("Packet"); - let data = if let Some(str_data) = str_data.as_ref() { - str_data as &dyn Debug + debugger.field("kind", &PacketKind::from_u8(self.header.kind)); + + let c_str = CStr::from_bytes_until_nul(data).ok(); + if let Some(str_data) = c_str.as_ref().and_then(|x| x.to_str().ok()) { + debugger.field("data", &str_data); } else { - &data as &dyn Debug - }; + debugger.field("data", &data); + } - f.debug_struct("Packet") - .field("kind", &PacketKind::from_u8(self.header.kind)) - .field("data", &data) - .finish() + debugger.finish() } }