Просмотр исходного кода

Fix scenario where the timeout for atomic wait is set to negative number (#1767)

The code, when received -1, performed -1/1000 operation which rounds to 0,
i.e. no wait (instead of infinite wait)
Marcin Kolny 3 лет назад
Родитель
Сommit
4cbfeec1f5
1 измененных файлов с 1 добавлено и 3 удалено
  1. 1 3
      core/iwasm/common/wasm_shared_memory.c

+ 1 - 3
core/iwasm/common/wasm_shared_memory.c

@@ -385,10 +385,8 @@ wasm_runtime_atomic_wait(WASMModuleInstanceCommon *module, void *address,
     /* condition wait start */
     /* condition wait start */
     os_mutex_lock(&wait_node->wait_lock);
     os_mutex_lock(&wait_node->wait_lock);
 
 
-    if (timeout < 0)
-        timeout = BHT_WAIT_FOREVER;
     os_cond_reltimedwait(&wait_node->wait_cond, &wait_node->wait_lock,
     os_cond_reltimedwait(&wait_node->wait_cond, &wait_node->wait_lock,
-                         timeout / 1000);
+                         timeout < 0 ? BHT_WAIT_FOREVER : timeout / 1000);
 
 
     os_mutex_unlock(&wait_node->wait_lock);
     os_mutex_unlock(&wait_node->wait_lock);