diff options
Diffstat (limited to 'src/sem/ntapi_sem_query.c')
-rw-r--r-- | src/sem/ntapi_sem_query.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/sem/ntapi_sem_query.c b/src/sem/ntapi_sem_query.c index 816d50d..f1e53a9 100644 --- a/src/sem/ntapi_sem_query.c +++ b/src/sem/ntapi_sem_query.c @@ -16,10 +16,9 @@ static int32_t __sem_query_return( intptr_t * hlock, - int32_t status, - int32_t cmd) + int32_t status) { - if (cmd == NT_SEM_CMD_GETALL) + if (hlock) at_store(hlock,0); return status; @@ -53,6 +52,9 @@ int32_t __stdcall __ntapi_sem_query( if (sem_info_length != sizeof(nt_sem_info)) return NT_STATUS_INFO_LENGTH_MISMATCH; + /* init */ + hlock = 0; + /* section */ hsection = 0; secaddr = 0; @@ -93,17 +95,16 @@ int32_t __stdcall __ntapi_sem_query( msg.data.seminfo.section_size = secsize; if ((status = __ntapi->zw_request_wait_reply_port(sem->hport,&msg,&msg))) - return __sem_query_return(hlock,status,sem_ipc_cmd); + return __sem_query_return(hlock,status); else if (msg.data.ttyinfo.status) - return __sem_query_return(hlock,msg.data.ttyinfo.status,sem_ipc_cmd); + return __sem_query_return(hlock,msg.data.ttyinfo.status); /* reply */ if (sem_ipc_cmd == NT_SEM_CMD_GETALL) { if (msg.data.seminfo.section_size > sem_info_length) return __sem_query_return( hlock, - NT_STATUS_BUFFER_TOO_SMALL, - sem_ipc_cmd); + NT_STATUS_BUFFER_TOO_SMALL); __ntapi->tt_generic_memcpy( sem_info,secaddr, |