diff --git a/loader/win32.c b/loader/win32.c index 6627789362..35d38b72f0 100644 --- a/loader/win32.c +++ b/loader/win32.c @@ -1379,6 +1379,8 @@ static void WINAPI expLeaveCriticalSection(CRITICAL_SECTION* c) cs->locked=0; pthread_mutex_unlock(&(cs->mutex)); } + else + printf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c); return; } @@ -1394,6 +1396,18 @@ static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) // struct CRITSECT* cs=(struct CRITSECT*)c; dbgprintf("DeleteCriticalSection(0x%x)\n",c); + if (!cs) + { + printf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c); + return; + } + + if (cs->locked) + { + printf("Win32 Warning: Deleting unlocked Critical Section %p!!\n", c); + pthread_mutex_unlock(&(cs->mutex)); + } + #ifndef GARBAGE pthread_mutex_destroy(&(cs->mutex)); // released by GarbageCollector in my_relase otherwise