diff --git a/src/xpdev/semwrap.c b/src/xpdev/semwrap.c index a489162dd7d6fe196c04c9dbd6d7050eeda512f5..ff08651b7ecbfd463068e13753fda9044ec6e9df 100644 --- a/src/xpdev/semwrap.c +++ b/src/xpdev/semwrap.c @@ -96,8 +96,23 @@ int sem_post(sem_t* psem) int sem_getvalue(sem_t* psem, int* vp) { +#if 0 /* This only works on 9x *sniff* */ ReleaseSemaphore(*(psem),0,(LPLONG)vp); return 0; +#else + /* Note, this should REALLY be in a critical section... */ + int retval=0; + + if(WaitForSingleObject(*(psem),0)!=WAIT_OBJECT_0) + *vp=0; + else { + if(ReleaseSemaphore(*(psem),1,(LPLONG)vp)) + (*vp)++; + else + retval=-1; + } + return(retval); +#endif } int sem_destroy(sem_t* psem)