Commit 0d4953ec authored by Rob Swindell's avatar Rob Swindell 💬
Browse files

Fix sem_wait() call in vdd_read()

Introduced in Revision 1.16 (CVS)
Wed May 10 08:52:11 2006 UTC (15 years, 6 months ago) by rswindell

This was supposed to wait (block) until there was a new received
byte (the ringbuf semaphore was signaled), but we were passing the sem_t
value rather than the pointer to the sem_t. Since sem_t (on Windows)
is a HANDLE (which is a void*), there was no compiler warning or
error. Type-safety in C sucks.
So, this just never worked (I'm assuming the call would just fail).

I discovered this bug while working on NTVDMx64 support and in that
case, this call would block/wait forever. Simple one character fix.
parent cfd02a91
Pipeline #2492 passed with stage
in 15 minutes and 31 seconds
...@@ -255,7 +255,7 @@ void _cdecl input_thread(void* arg) ...@@ -255,7 +255,7 @@ void _cdecl input_thread(void* arg)
unsigned vdd_read(BYTE* p, unsigned count) unsigned vdd_read(BYTE* p, unsigned count)
{ {
sem_wait(rdbuf.sem); sem_wait(&rdbuf.sem);
count=RingBufRead(&rdbuf,p,count); count=RingBufRead(&rdbuf,p,count);
if(count==0) if(count==0)
lprintf(LOG_ERR,"!VDD_READ: RingBufRead read 0"); lprintf(LOG_ERR,"!VDD_READ: RingBufRead read 0");
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment