From eb7ae10dec88a71f8ef29ce914529040bbd43374 Mon Sep 17 00:00:00 2001 From: pluveto Date: Tue, 26 Nov 2024 22:13:07 +0800 Subject: [PATCH 1/3] 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; } } From 6372a145472ca80f25626929f0561cc8b5d9fd92 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:33:56 +1000 Subject: [PATCH 2/3] Update buf_writer.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/futures/write/buf_writer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/futures/write/buf_writer.rs b/src/futures/write/buf_writer.rs index 895ccc2..13f23f1 100644 --- a/src/futures/write/buf_writer.rs +++ b/src/futures/write/buf_writer.rs @@ -194,7 +194,7 @@ impl AsyncBufWrite for BufWriter { fn produce(self: Pin<&mut Self>, amt: usize) { let this = self.project(); - assert!( + debug_assert!( *this.buffered + amt <= this.buf.len(), "produce called with amt exceeding buffer capacity" ); From 292ea4c3ec1f5f66a291a946d39ca962153600c1 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:34:01 +1000 Subject: [PATCH 3/3] Update buf_writer.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/tokio/write/buf_writer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tokio/write/buf_writer.rs b/src/tokio/write/buf_writer.rs index 40e87f1..c56c7e6 100644 --- a/src/tokio/write/buf_writer.rs +++ b/src/tokio/write/buf_writer.rs @@ -194,7 +194,7 @@ impl AsyncBufWrite for BufWriter { fn produce(self: Pin<&mut Self>, amt: usize) { let this = self.project(); - assert!( + debug_assert!( *this.buffered + amt <= this.buf.len(), "produce called with amt exceeding buffer capacity" );