Fix win_thread.c timed wait always return 0 issue (#994)

win_thread.c os_cond_wait_internal returns os_sem_reltimed_wait or os_sem_wait result instead of always return BHT_OK before
This commit is contained in:
xingkaiyu 2022-02-05 21:14:39 +08:00 committed by GitHub
parent 770ca8c90c
commit 96a8bdf717
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -516,10 +516,11 @@ os_cond_wait_internal(korp_cond *cond, korp_mutex *mutex, bool timed,
/* Unlock mutex, wait sem and lock mutex again */
os_mutex_unlock(mutex);
int wait_result;
if (timed)
os_sem_reltimed_wait(&node->sem, useconds);
wait_result = os_sem_reltimed_wait(&node->sem, useconds);
else
os_sem_wait(&node->sem);
wait_result = os_sem_wait(&node->sem);
os_mutex_lock(mutex);
/* Remove wait node from wait list */
@ -535,7 +536,7 @@ os_cond_wait_internal(korp_cond *cond, korp_mutex *mutex, bool timed,
}
os_mutex_unlock(&cond->wait_list_lock);
return BHT_OK;
return wait_result;
}
int