@@ -27,10 +27,8 @@ use std::str::FromStr;
27
27
28
28
use unix_socket:: UnixStream ;
29
29
use serde_json as json;
30
- use event:: Event ;
31
30
use byteorder:: { ReadBytesExt , WriteBytesExt , LittleEndian } ;
32
31
33
- mod readhelp;
34
32
mod common;
35
33
pub mod reply;
36
34
pub mod event;
@@ -139,7 +137,8 @@ impl I3Funcs for UnixStream {
139
137
140
138
/// returns a tuple of (message type, payload)
141
139
fn receive_i3_message ( & mut self ) -> io:: Result < ( u32 , String ) > {
142
- let magic_data = try!( readhelp:: read_exact ( self , 6 ) ) ;
140
+ let mut magic_data = [ 0_u8 ; 6 ] ;
141
+ try!( self . read_exact ( & mut magic_data) ) ;
143
142
let magic_string = String :: from_utf8_lossy ( & magic_data) ;
144
143
if magic_string != "i3-ipc" {
145
144
let error_text = format ! ( "unexpected magic string: expected 'i3-ipc' but got {}" ,
@@ -148,7 +147,8 @@ impl I3Funcs for UnixStream {
148
147
}
149
148
let payload_len = try!( self . read_u32 :: < LittleEndian > ( ) ) ;
150
149
let message_type = try!( self . read_u32 :: < LittleEndian > ( ) ) ;
151
- let payload_data = try!( readhelp:: read_exact ( self , payload_len as usize ) ) ;
150
+ let mut payload_data = vec ! [ 0_u8 ; payload_len as usize ] ;
151
+ try!( self . read_exact ( & mut payload_data[ ..] ) ) ;
152
152
let payload_string = String :: from_utf8_lossy ( & payload_data) . into_owned ( ) ;
153
153
Ok ( ( message_type, payload_string) )
154
154
}
0 commit comments