From eb7ae10dec88a71f8ef29ce914529040bbd43374 Mon Sep 17 00:00:00 2001 From: pluveto Date: Tue, 26 Nov 2024 22:13:07 +0800 Subject: [PATCH] Add assertion in `produce` method to check buffer capacity in implementations for `BufWriter` --- src/futures/write/buf_writer.rs | 7 ++++++- src/tokio/write/buf_writer.rs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/futures/write/buf_writer.rs b/src/futures/write/buf_writer.rs index f3948c6..895ccc2 100644 --- a/src/futures/write/buf_writer.rs +++ b/src/futures/write/buf_writer.rs @@ -193,7 +193,12 @@ impl AsyncBufWrite for BufWriter { } fn produce(self: Pin<&mut Self>, amt: usize) { - *self.project().buffered += amt; + let this = self.project(); + assert!( + *this.buffered + amt <= this.buf.len(), + "produce called with amt exceeding buffer capacity" + ); + *this.buffered += amt; } } diff --git a/src/tokio/write/buf_writer.rs b/src/tokio/write/buf_writer.rs index 620ed85..40e87f1 100644 --- a/src/tokio/write/buf_writer.rs +++ b/src/tokio/write/buf_writer.rs @@ -193,7 +193,12 @@ impl AsyncBufWrite for BufWriter { } fn produce(self: Pin<&mut Self>, amt: usize) { - *self.project().buffered += amt; + let this = self.project(); + assert!( + *this.buffered + amt <= this.buf.len(), + "produce called with amt exceeding buffer capacity" + ); + *this.buffered += amt; } }