From fbaa7ce75e5e06bbed15c514601a87cc4ddededf Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Thu, 28 Aug 2025 09:04:37 +0200 Subject: [PATCH] When `PipeAsStringHandler` is destroyed, ensure that we flush any pending data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise, we would not handle the last line if it didn’t end with a newline character. --- Sources/SwiftExtensions/PipeAsStringHandler.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Sources/SwiftExtensions/PipeAsStringHandler.swift b/Sources/SwiftExtensions/PipeAsStringHandler.swift index bc03df4e..3d12dba7 100644 --- a/Sources/SwiftExtensions/PipeAsStringHandler.swift +++ b/Sources/SwiftExtensions/PipeAsStringHandler.swift @@ -27,6 +27,14 @@ package actor PipeAsStringHandler { self.handler = handler } + deinit { + if !buffer.isEmpty { + queue.async { [handler, buffer] in + handler(String(data: buffer, encoding: .utf8) ?? "") + } + } + } + private func handleDataFromPipeImpl(_ newData: Data) { self.buffer += newData while let newlineIndex = self.buffer.firstIndex(of: UInt8(ascii: "\n")) {