remove closure from assert
authorNathan Bronson <ngbronson@fb.com>
Fri, 19 Jan 2018 20:41:05 +0000 (12:41 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Fri, 19 Jan 2018 20:50:16 +0000 (12:50 -0800)
Summary:
Somebody reported compilation issues with the closure in post()'s
assert, resulting in "error: lambda-expression in unevaluated context".
While I haven't been able to reproduce the problem locally, it is easy
enough to work around in this case.

Reviewed By: djwatson, mcallahan

Differential Revision: D6759739

fbshipit-source-id: 9f8082a1e20cd9ddf626cb176542e4e861a7e702

folly/synchronization/Baton.h

index f483bd5dd8dd27676a8860caf0480497a85b5ddd..660a430c14d87c0e0c086aebfa87e5065981a59c 100644 (file)
@@ -123,10 +123,9 @@ class Baton {
     if (!MayBlock) {
       /// Spin-only version
       ///
     if (!MayBlock) {
       /// Spin-only version
       ///
-      assert([&] {
-        auto state = state_.load(std::memory_order_relaxed);
-        return (state == INIT || state == EARLY_DELIVERY);
-      }());
+      assert(
+          ((1 << state_.load(std::memory_order_relaxed)) &
+           ((1 << INIT) | (1 << EARLY_DELIVERY))) != 0);
       state_.store(EARLY_DELIVERY, std::memory_order_release);
       return;
     }
       state_.store(EARLY_DELIVERY, std::memory_order_release);
       return;
     }