Skip to content

Commit c54e146

Browse files
authored
deferred: don't delete self, to allow smart pointers to manage (#48174)
1 parent e0b251c commit c54e146

7 files changed

Lines changed: 115 additions & 92 deletions

File tree

src/handler/conncheckworker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ ConnCheckWorker::ConnCheckWorker(ZrpcRequest *req, ZrpcManager *proxyControlClie
6161
if(!missing_.isEmpty())
6262
{
6363
// ask the proxy about any cids we don't know about
64-
Deferred *d = ControlRequest::connCheck(proxyControlClient, missing_, this);
65-
finishedConnection_ = d->finished.connect(boost::bind(&ConnCheckWorker::proxyConnCheck_finished, this, boost::placeholders::_1));
64+
connCheck_ = std::unique_ptr<Deferred>(ControlRequest::connCheck(proxyControlClient, missing_));
65+
finishedConnection_ = connCheck_->finished.connect(boost::bind(&ConnCheckWorker::proxyConnCheck_finished, this, boost::placeholders::_1));
6666
return;
6767
}
6868

src/handler/conncheckworker.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class ConnCheckWorker : public Deferred
4646
std::unique_ptr<ZrpcRequest> req_;
4747
CidSet cids_;
4848
CidSet missing_;
49+
std::unique_ptr<Deferred> connCheck_;
4950
Connection finishedConnection_;
5051

5152
void respondError(const QByteArray &condition);

src/handler/deferred.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ Deferred::~Deferred()
3333
{
3434
}
3535

36-
void Deferred::cancel()
37-
{
38-
delete this;
39-
}
40-
4136
void Deferred::setFinished(bool ok, const QVariant &value)
4237
{
4338
result_.success = ok;
@@ -49,5 +44,4 @@ void Deferred::setFinished(bool ok, const QVariant &value)
4944
void Deferred::doFinish()
5045
{
5146
finished(result_);
52-
delete this;
5347
}

src/handler/deferred.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ class Deferred : public QObject
5656
public:
5757
virtual ~Deferred();
5858

59-
virtual void cancel();
60-
6159
boost::signals2::signal<void(const DeferredResult&)> finished;
6260

6361
protected:

0 commit comments

Comments
 (0)