diff --git a/src/core/ext/transport/chaotic_good/server_transport.cc b/src/core/ext/transport/chaotic_good/server_transport.cc index b40e0290b0a..d6c5faf3574 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.cc +++ b/src/core/ext/transport/chaotic_good/server_transport.cc @@ -240,7 +240,7 @@ auto ChaoticGoodServerTransport::DeserializeAndPushFragmentToNewCall( call_initiator->SpawnGuarded( "server-write", [this, stream_id = frame_header.stream_id, call_initiator = *call_initiator, - call_handler = std::move(call.handler)]() { + call_handler = std::move(call.handler)]() mutable { call_destination_->StartCall(std::move(call_handler)); return CallOutboundLoop(stream_id, call_initiator); }); diff --git a/src/core/lib/promise/party.cc b/src/core/lib/promise/party.cc index b8b6a899a48..1fbc01fd3da 100644 --- a/src/core/lib/promise/party.cc +++ b/src/core/lib/promise/party.cc @@ -41,18 +41,18 @@ namespace grpc_core { // PartySyncUsingAtomics GRPC_MUST_USE_RESULT bool Party::RefIfNonZero() { - auto count = state_.load(std::memory_order_relaxed); + auto state = state_.load(std::memory_order_relaxed); do { // If zero, we are done (without an increment). If not, we must do a CAS // to maintain the contract: do not increment the counter if it is already // zero - if (count == 0) { + if ((state & kRefMask) == 0) { return false; } - } while (!state_.compare_exchange_weak(count, count + kOneRef, + } while (!state_.compare_exchange_weak(state, state + kOneRef, std::memory_order_acq_rel, std::memory_order_relaxed)); - LogStateChange("RefIfNonZero", count, count + kOneRef); + LogStateChange("RefIfNonZero", state, state + kOneRef); return true; }