fixed node-pty conpty assertion failure - fixes #10618

This commit is contained in:
Eugeny
2025-08-17 22:14:36 +02:00
parent b9e335817d
commit a2d27fe6a1
3 changed files with 226 additions and 59 deletions

View File

@@ -0,0 +1,29 @@
diff --git a/node_modules/node-pty/src/win/conpty.cc b/node_modules/node-pty/src/win/conpty.cc
index c41796c..08c6439 100644
--- a/node_modules/node-pty/src/win/conpty.cc
+++ b/node_modules/node-pty/src/win/conpty.cc
@@ -107,9 +107,22 @@ void SetupExitCallback(Napi::Env env, Napi::Function cb, pty_baton* baton) {
CloseHandle(baton->hOut);
auto status = tsfn.BlockingCall(exit_event, callback); // In main thread
- assert(status == napi_ok);
+ switch (status) {
+ case napi_closing:
+ break;
- tsfn.Release();
+ case napi_queue_full:
+ Napi::Error::Fatal("SetupExitCallback", "Queue was full");
+
+ case napi_ok:
+ if (tsfn.Release() != napi_ok) {
+ Napi::Error::Fatal("SetupExitCallback", "ThreadSafeFunction.Release() failed");
+ }
+ break;
+
+ default:
+ Napi::Error::Fatal("SetupExitCallback", "ThreadSafeFunction.BlockingCall() failed");
+ }
});
}