diff options
Diffstat (limited to 'src/console/ptyc_console_writer.c')
-rw-r--r-- | src/console/ptyc_console_writer.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/console/ptyc_console_writer.c b/src/console/ptyc_console_writer.c index 24509f8..bef7ea7 100644 --- a/src/console/ptyc_console_writer.c +++ b/src/console/ptyc_console_writer.c @@ -11,6 +11,7 @@ #include <ptycon/ptycon.h> #include "ptycon_driver_impl.h" +#include "ptycon_status_impl.h" static ptyc_term_handler ptyc_screen_handler; static ptyc_term_handler ptyc_ctrl_handler; @@ -59,13 +60,12 @@ int __stdcall ptyc_console_writer(struct ptyc_driver_ctx_impl * ictx) 0,0); if (status == NT_STATUS_PENDING) - status = ntapi->zw_wait_for_single_object( - hwait,NT_SYNC_ALERTABLE,0); + if (!(status = ntapi->zw_wait_for_single_object( + hwait,NT_SYNC_ALERTABLE,0))) + status = iosb.status; - if (status || iosb.status) { - ntapi->zw_close(hwait); - return status ? status : iosb.status; - } + if (status) + return ptyc_set_status(&ictx->ctx,status); /* account for leftover bytes from the previous conversion */ tctx->data.in[0] = uc_params.leftover_bytes; |