mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:27:43 +00:00
[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:
parent
f644a30069
commit
24936fecb9
|
@ -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));
|
||||
|
|
Loading…
Reference in a new issue