diff --git a/microscript/ILibDuktape_net.c b/microscript/ILibDuktape_net.c index 2b31212..5e73e34 100644 --- a/microscript/ILibDuktape_net.c +++ b/microscript/ILibDuktape_net.c @@ -961,14 +961,17 @@ BOOL ILibDuktape_server_ipc_ReadSink(void *chain, HANDLE h, ILibWaitHandle_Error if (winIPC->reservedState != NULL) { ILibChain_WaitHandle_DestroySavedState(chain, winIPC->reservedState); winIPC->reservedState = NULL; } ILibDuktape_DuplexStream_Closed(winIPC->ds); - duk_push_heapptr(winIPC->ctx, winIPC->mServer); // [server] - if (duk_has_prop_string(winIPC->ctx, -1, ILibDuktape_net_server_closed_needEmit)) + if (winIPC->mServer != NULL) { - ILibDuktape_EventEmitter_SetupEmit(winIPC->ctx, winIPC->mServer, "close"); // [server][emit][this][close] - if (duk_pcall_method(winIPC->ctx, 1) != 0) { ILibDuktape_Process_UncaughtExceptionEx(winIPC->ctx, "net.ipcServer.onClose() Error: "); } - duk_pop(winIPC->ctx); // [server] + duk_push_heapptr(winIPC->ctx, winIPC->mServer); // [server] + if (duk_has_prop_string(winIPC->ctx, -1, ILibDuktape_net_server_closed_needEmit)) + { + ILibDuktape_EventEmitter_SetupEmit(winIPC->ctx, winIPC->mServer, "close"); // [server][emit][this][close] + if (duk_pcall_method(winIPC->ctx, 1) != 0) { ILibDuktape_Process_UncaughtExceptionEx(winIPC->ctx, "net.ipcServer.onClose() Error: "); } + duk_pop(winIPC->ctx); // [server] + } + duk_pop(winIPC->ctx); // ... } - duk_pop(winIPC->ctx); // ... return(FALSE); }