diff -r e7c059ac6e54 -r a158ff8f84ef rust/hedgewars-server/src/protocol.rs --- a/rust/hedgewars-server/src/protocol.rs Mon Sep 30 16:02:39 2019 +0200 +++ b/rust/hedgewars-server/src/protocol.rs Tue Oct 01 23:48:32 2019 +0300 @@ -24,7 +24,8 @@ fn recover(&mut self) -> bool { self.is_recovering = match parser::malformed_message(&self.buf[..]) { Ok((tail, ())) => { - self.buf.consume(self.buf.len() - tail.len()); + let length = tail.len(); + self.buf.consume(self.buf.len() - length); false } _ => { @@ -50,7 +51,8 @@ match parser::message(&self.buf[..]) { Ok((tail, message)) => { messages.push(message); - self.buf.consume(self.buf.len() - tail.len()); + let length = tail.len(); + self.buf.consume(self.buf.len() - length); } Err(nom::Err::Incomplete(_)) => break, Err(nom::Err::Failure(e)) | Err(nom::Err::Error(e)) => {