aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2021-12-30 12:46:50 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-01 20:46:53 +0100
commita5a261b2c0dc60f99c8caa4729683d2780677f88 (patch)
tree01f030078db8a192904bf1c321071ee3ecf67b09
parent5b8ea1a0d419fda1729aaa81e34ad20e0dacef44 (diff)
downloadlibquotient-a5a261b2c0dc60f99c8caa4729683d2780677f88.tar.gz
libquotient-a5a261b2c0dc60f99c8caa4729683d2780677f88.zip
Define destructors out-of-line when unique/scoped ptr are involved
Once visibility kicks in, MSVC changes its ways and tries to instantiate Private classes wrapped in smart pointers upon their occurence in the header file - which leads to build breakage because of a missing destructor. Usually making the outer class destructor out-of-line helps to fix this (see RoomEvent, for one example).
-rw-r--r--lib/jobs/downloadfilejob.cpp2
-rw-r--r--lib/jobs/downloadfilejob.h1
-rw-r--r--lib/mxcreply.cpp2
-rw-r--r--lib/mxcreply.h2
4 files changed, 7 insertions, 0 deletions
diff --git a/lib/jobs/downloadfilejob.cpp b/lib/jobs/downloadfilejob.cpp
index 0b0531ad..6bf221cb 100644
--- a/lib/jobs/downloadfilejob.cpp
+++ b/lib/jobs/downloadfilejob.cpp
@@ -37,6 +37,8 @@ DownloadFileJob::DownloadFileJob(const QString& serverName,
setObjectName(QStringLiteral("DownloadFileJob"));
}
+DownloadFileJob::~DownloadFileJob() = default;
+
QString DownloadFileJob::targetFileName() const
{
return (d->targetFile ? d->targetFile : d->tempFile)->fileName();
diff --git a/lib/jobs/downloadfilejob.h b/lib/jobs/downloadfilejob.h
index d9f3b686..9e807fe7 100644
--- a/lib/jobs/downloadfilejob.h
+++ b/lib/jobs/downloadfilejob.h
@@ -13,6 +13,7 @@ public:
DownloadFileJob(const QString& serverName, const QString& mediaId,
const QString& localFilename = {});
+ ~DownloadFileJob() override;
QString targetFileName() const;
diff --git a/lib/mxcreply.cpp b/lib/mxcreply.cpp
index 0b6643fc..fb16c79f 100644
--- a/lib/mxcreply.cpp
+++ b/lib/mxcreply.cpp
@@ -38,6 +38,8 @@ MxcReply::MxcReply(QNetworkReply* reply, Room* room, const QString &eventId)
});
}
+MxcReply::~MxcReply() = default;
+
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
#define ERROR_SIGNAL errorOccurred
#else
diff --git a/lib/mxcreply.h b/lib/mxcreply.h
index 23049b7d..1d31d608 100644
--- a/lib/mxcreply.h
+++ b/lib/mxcreply.h
@@ -13,10 +13,12 @@ class Room;
class QUOTIENT_API MxcReply : public QNetworkReply
{
+ Q_OBJECT
public:
explicit MxcReply();
explicit MxcReply(QNetworkReply *reply);
MxcReply(QNetworkReply* reply, Room* room, const QString& eventId);
+ ~MxcReply() override;
public Q_SLOTS:
void abort() override;