mirror of
https://github.com/sogou/workflow.git
synced 2026-02-08 01:33:17 +08:00
Fix compiling error when message doesn't have a move constructor. (#1678)
* Fix compiling error when message doesn't have a move constructor. * Clear response safely.
This commit is contained in:
@@ -367,7 +367,7 @@ public:
|
||||
ProtocolMessage *
|
||||
ComplexRedisSubscribeTask::SubscribeWrapper::next_in(ProtocolMessage *message)
|
||||
{
|
||||
redis_reply_t *reply = ((RedisResponse *)message)->result_ptr();
|
||||
redis_reply_t *reply = task_->resp.result_ptr();
|
||||
|
||||
if (reply->type != REDIS_REPLY_TYPE_ARRAY)
|
||||
{
|
||||
@@ -385,7 +385,9 @@ ComplexRedisSubscribeTask::SubscribeWrapper::next_in(ProtocolMessage *message)
|
||||
task_->watching_ = true;
|
||||
task_->extract_(task_);
|
||||
|
||||
task_->clear_resp();
|
||||
RedisResponse resp;
|
||||
*(protocol::ProtocolMessage *)&resp = std::move(task_->resp);
|
||||
task_->resp = std::move(resp);
|
||||
return task_->finished_ ? NULL : &task_->resp;
|
||||
}
|
||||
|
||||
|
||||
@@ -179,9 +179,10 @@ protected:
|
||||
|
||||
void clear_resp()
|
||||
{
|
||||
RESP resp;
|
||||
*(protocol::ProtocolMessage *)&resp = std::move(this->resp);
|
||||
this->resp = std::move(resp);
|
||||
protocol::ProtocolMessage head(std::move(this->resp));
|
||||
this->resp.~RESP();
|
||||
new(&this->resp) RESP;
|
||||
*(protocol::ProtocolMessage *)&this->resp = std::move(head);
|
||||
}
|
||||
|
||||
void disable_retry()
|
||||
|
||||
Reference in New Issue
Block a user