diff --git a/src/pty/ntapi_pty_fd.c b/src/pty/ntapi_pty_fd.c index 7670c66..ea62874 100644 --- a/src/pty/ntapi_pty_fd.c +++ b/src/pty/ntapi_pty_fd.c @@ -9,6 +9,7 @@ #include #include #include "ntapi_impl.h" +#include "ntapi_log.h" #include "ntapi_pty.h" static int32_t __stdcall __ntapi_pty_open_close( @@ -141,7 +142,22 @@ static int32_t __ntapi_pty_connect( 0,&ctx->section_size, NT_VIEW_UNMAP,0, NT_PAGE_READWRITE))) - return __ntapi_pty_fail(ctx,status); + ctx->section_addr = 0; + + /* resilience */ + if (!ctx->section_addr) { + __ntapi_log_write("__ntapi_pty_connect:149\n",24); + if ((status = __ntapi->zw_map_view_of_section( + ctx->section, + NT_CURRENT_PROCESS_HANDLE, + &ctx->section_addr, + 0,ctx->section_size, + 0,&ctx->section_size, + NT_VIEW_UNMAP,0, + NT_PAGE_READWRITE))) + return __ntapi_pty_fail(ctx,status); + __ntapi_log_write("__ntapi_pty_connect:159\n",24); + } /* assume conforming clients, config for single lock try */ __ntapi->tt_sync_block_init(&ctx->sync[__PTY_READ],0,0,1,0,0);