[libcxx] r302297 - Fix condition_variable::wait_until and wait_for on Windows.

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Fri May 5 14:31:23 PDT 2017


Author: ericwf
Date: Fri May  5 16:31:22 2017
New Revision: 302297

URL: http://llvm.org/viewvc/llvm-project?rev=302297&view=rev
Log:
Fix condition_variable::wait_until and wait_for on Windows.

The ERROR_TIMEDOUT returned by the Windows API does not
have the same value as ETIMEDOUT. This caused condition_variable
to return timeouts as unknown errors.

Modified:
    libcxx/trunk/include/__threading_support

Modified: libcxx/trunk/include/__threading_support
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__threading_support?rev=302297&r1=302296&r2=302297&view=diff
==============================================================================
--- libcxx/trunk/include/__threading_support (original)
+++ libcxx/trunk/include/__threading_support Fri May  5 16:31:22 2017
@@ -474,7 +474,10 @@ int __libcpp_condvar_timedwait(__libcpp_
                                  timeout_ms.count() > 0 ? timeout_ms.count()
                                                         : 0,
                                  0))
-    return GetLastError();
+    {
+      auto __ec = GetLastError();
+      return __ec == ERROR_TIMEOUT ? ETIMEDOUT : __ec;
+    }
   return 0;
 }
 




More information about the cfe-commits mailing list