소스 검색

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
xingkaiyu 4 년 전
부모
커밋
96a8bdf717
1개의 변경된 파일4개의 추가작업 그리고 3개의 파일을 삭제
  1. 4 3
      core/shared/platform/windows/win_thread.c

+ 4 - 3
core/shared/platform/windows/win_thread.c

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