From e479d9f34afacb71081c5b6cb5e4970bbfcff95e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 21:01:46 +0000 Subject: [PATCH 1/2] Remove try-finally ArrayPool return from ReadAsync and WriteAsync Agent-Logs-Url: https://github.com/mycroes/Sally7/sessions/0c551dde-09a9-4e0b-91aa-dd1a7de675df Co-authored-by: mycroes <122017+mycroes@users.noreply.github.com> --- Sally7/S7Connection.cs | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/Sally7/S7Connection.cs b/Sally7/S7Connection.cs index b1aaf3d..3bcf8de 100644 --- a/Sally7/S7Connection.cs +++ b/Sally7/S7Connection.cs @@ -227,16 +227,9 @@ await stream public async Task ReadAsync(IDataItem[] dataItems, CancellationToken cancellationToken = default) { var results = ArrayPool.Shared.Rent(dataItems.Length); - try - { - await ReadAsync(dataItems, results, cancellationToken).ConfigureAwait(false); + await ReadAsync(dataItems, results, cancellationToken).ConfigureAwait(false); - ReadWriteErrorHelpers.ThrowIfHasErrors("Read", dataItems, results.AsSpan(0, dataItems.Length)); - } - finally - { - ArrayPool.Shared.Return(results); - } + ReadWriteErrorHelpers.ThrowIfHasErrors("Read", dataItems, results.AsSpan(0, dataItems.Length)); } /// @@ -297,16 +290,9 @@ public async Task ReadAsync(IDataItem[] dataItems, Memory re public async Task WriteAsync(IDataItem[] dataItems, CancellationToken cancellationToken = default) { var results = ArrayPool.Shared.Rent(dataItems.Length); - try - { - await WriteAsync(dataItems, results, cancellationToken).ConfigureAwait(false); + await WriteAsync(dataItems, results, cancellationToken).ConfigureAwait(false); - ReadWriteErrorHelpers.ThrowIfHasErrors("Write", dataItems, results.AsSpan(0, dataItems.Length)); - } - finally - { - ArrayPool.Shared.Return(results); - } + ReadWriteErrorHelpers.ThrowIfHasErrors("Write", dataItems, results.AsSpan(0, dataItems.Length)); } /// From 9252f04042788c9a8d17fe163a69bb873627e109 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 21:05:02 +0000 Subject: [PATCH 2/2] Return ArrayPool buffer to pool on success path only Agent-Logs-Url: https://github.com/mycroes/Sally7/sessions/5d42deb2-9b80-482e-98e9-cdfe1950b01c Co-authored-by: mycroes <122017+mycroes@users.noreply.github.com> --- Sally7/S7Connection.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sally7/S7Connection.cs b/Sally7/S7Connection.cs index 3bcf8de..2db4e95 100644 --- a/Sally7/S7Connection.cs +++ b/Sally7/S7Connection.cs @@ -230,6 +230,7 @@ public async Task ReadAsync(IDataItem[] dataItems, CancellationToken cancellatio await ReadAsync(dataItems, results, cancellationToken).ConfigureAwait(false); ReadWriteErrorHelpers.ThrowIfHasErrors("Read", dataItems, results.AsSpan(0, dataItems.Length)); + ArrayPool.Shared.Return(results); } /// @@ -293,6 +294,7 @@ public async Task WriteAsync(IDataItem[] dataItems, CancellationToken cancellati await WriteAsync(dataItems, results, cancellationToken).ConfigureAwait(false); ReadWriteErrorHelpers.ThrowIfHasErrors("Write", dataItems, results.AsSpan(0, dataItems.Length)); + ArrayPool.Shared.Return(results); } ///