[macros] ensure we close the socket if the process fails to start

Change-Id: I29a9583080d27ce286d0c2f9f7dfa2d267b60b9d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332600
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Jake Macdonald <jakemac@google.com>
This commit is contained in:
Jake Macdonald 2023-10-27 16:32:35 +00:00 committed by Commit Queue
parent f644a30069
commit 24936fecb9

View file

@ -60,11 +60,17 @@ class _SingleProcessMacroExecutor extends ExternalMacroExecutorBase {
} on SocketException catch (_) {
serverSocket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
}
Process process = await Process.start(programPath, [
...arguments,
serverSocket.address.address,
serverSocket.port.toString(),
]);
Process process;
try {
process = await Process.start(programPath, [
...arguments,
serverSocket.address.address,
serverSocket.port.toString(),
]);
} catch (e) {
await serverSocket.close();
rethrow;
}
process.stderr
.transform(const Utf8Decoder())
.listen((content) => throw new RemoteException(content));