From 7d697d84c80e58671e38fc2bd509f30e20bb02e6 Mon Sep 17 00:00:00 2001 From: Martin Kampas Date: Thu, 11 Apr 2024 14:03:17 +0200 Subject: [PATCH] [transfer-engine] Ensure class members are initialized. JB#61927 Few cases of uninitialized members discovered by Coverity (CID 449633, CID 449640) and there was already one related fix few commits back, so better uniformly use default member initializers to ensure all members get reasonable defaults. The less exceptions the better, so even d_ptr etc. Also drop some code the compiler can generate automatically. --- declarative/declarativetransfermodel.cpp | 10 ------- declarative/declarativetransfermodel.h | 26 ++++++++--------- declarative/synchronizelists_p.h | 2 +- lib/mediaitem.h | 2 +- lib/mediatransferinterface.cpp | 15 +++------- lib/mediatransferinterface.h | 2 +- lib/sharingmethodinfo.cpp | 37 +++--------------------- lib/sharingmethodinfo.h | 2 +- lib/sharingpluginloader.h | 2 +- lib/sharingpluginloader_p.h | 4 +-- lib/transferdbrecord.h | 14 ++++----- lib/transferengineclient.cpp | 2 +- lib/transferengineclient.h | 4 +-- src/transferengine.h | 2 +- src/transferengine_p.h | 10 +++---- 15 files changed, 44 insertions(+), 90 deletions(-) diff --git a/declarative/declarativetransfermodel.cpp b/declarative/declarativetransfermodel.cpp index ebf69bf..177070b 100644 --- a/declarative/declarativetransfermodel.cpp +++ b/declarative/declarativetransfermodel.cpp @@ -52,16 +52,6 @@ class TransferDatabase : public QSqlDatabase TransferModel::TransferModel(QObject *parent) : QAbstractListModel(parent) , m_rows(new QVector()) - , m_rowsIndex(0) - , m_asyncIndex(0) - , m_transfersInProgress(0) - , m_status(Null) - , m_asyncStatus(Null) - , m_asyncPending(false) - , m_asyncRunning(false) - , m_notified(false) - , m_complete(false) - , m_rowsChanges(false) { setAutoDelete(false); } diff --git a/declarative/declarativetransfermodel.h b/declarative/declarativetransfermodel.h index 9b6b4aa..7f5a0cc 100644 --- a/declarative/declarativetransfermodel.h +++ b/declarative/declarativetransfermodel.h @@ -117,26 +117,26 @@ public slots: QString m_asyncErrorString; QVector m_asyncRows; - QVector *m_rows; + QVector *m_rows = nullptr; QHash m_roles; QMutex m_mutex; QWaitCondition m_condition; - int m_rowsIndex; - int m_asyncIndex; - int m_asyncTransfersInProgress; - int m_transfersInProgress; + int m_rowsIndex = 0; + int m_asyncIndex = 0; + int m_asyncTransfersInProgress = 0; + int m_transfersInProgress = 0; - Status m_status; - Status m_asyncStatus; - bool m_asyncPending; - bool m_asyncRunning; - bool m_notified; - bool m_complete; - bool m_rowsChanges; + Status m_status = Null; + Status m_asyncStatus = Null; + bool m_asyncPending = false; + bool m_asyncRunning = false; + bool m_notified = false; + bool m_complete = false; + bool m_rowsChanges = false; - TransferEngineInterface *m_client; + TransferEngineInterface *m_client = nullptr; }; #endif diff --git a/declarative/synchronizelists_p.h b/declarative/synchronizelists_p.h index f47027c..be47cc9 100644 --- a/declarative/synchronizelists_p.h +++ b/declarative/synchronizelists_p.h @@ -163,7 +163,7 @@ class SynchronizeList } } - Agent * const agent; + Agent *const agent = nullptr; const CacheList &cache; int &c; const ReferenceList &reference; diff --git a/lib/mediaitem.h b/lib/mediaitem.h index 362ebce..fc7b222 100644 --- a/lib/mediaitem.h +++ b/lib/mediaitem.h @@ -75,7 +75,7 @@ class MediaItem: public QObject private: - MediaItemPrivate *d_ptr; + MediaItemPrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(MediaItem) friend class TransferEngine; friend class TransferEnginePrivate; diff --git a/lib/mediatransferinterface.cpp b/lib/mediatransferinterface.cpp index 3d14e9b..1cb86c1 100644 --- a/lib/mediatransferinterface.cpp +++ b/lib/mediatransferinterface.cpp @@ -32,17 +32,10 @@ class MediaTransferInterfacePrivate { public: - MediaTransferInterfacePrivate(): - m_mediaItem(0), - m_status(MediaTransferInterface::NotStarted), - m_progress(0), - m_prevProgress(0) - {} - - MediaItem *m_mediaItem; - MediaTransferInterface::TransferStatus m_status; - qreal m_progress; - qreal m_prevProgress; + MediaItem *m_mediaItem = nullptr; + MediaTransferInterface::TransferStatus m_status = MediaTransferInterface::NotStarted; + qreal m_progress = 0; + qreal m_prevProgress = 0; }; diff --git a/lib/mediatransferinterface.h b/lib/mediatransferinterface.h index d13980b..e99bcb6 100644 --- a/lib/mediatransferinterface.h +++ b/lib/mediatransferinterface.h @@ -71,7 +71,7 @@ public Q_SLOTS: void progressUpdated(qreal progress); private: - MediaTransferInterfacePrivate *d_ptr; + MediaTransferInterfacePrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(MediaTransferInterface) friend class TransferEngine; friend class TransferEnginePrivate; diff --git a/lib/sharingmethodinfo.cpp b/lib/sharingmethodinfo.cpp index 2c7c92c..e03e1a0 100644 --- a/lib/sharingmethodinfo.cpp +++ b/lib/sharingmethodinfo.cpp @@ -29,37 +29,16 @@ class SharingMethodInfoPrivate { public: - SharingMethodInfoPrivate(); - SharingMethodInfoPrivate(const SharingMethodInfoPrivate *other); - QString displayName; QString subtitle; QString methodId; QString methodIcon; - quint32 accountId; + quint32 accountId = 0; QString shareUIPath; QStringList capabilities; - bool supportsMultipleFiles; + bool supportsMultipleFiles = false; }; -SharingMethodInfoPrivate::SharingMethodInfoPrivate() - : accountId(0) - , supportsMultipleFiles(false) -{ -} - -SharingMethodInfoPrivate::SharingMethodInfoPrivate(const SharingMethodInfoPrivate *other) - : displayName(other->displayName) - , subtitle(other->subtitle) - , methodId(other->methodId) - , methodIcon(other->methodIcon) - , accountId(other->accountId) - , shareUIPath(other->shareUIPath) - , capabilities(other->capabilities) - , supportsMultipleFiles(other->supportsMultipleFiles) -{ -} - /*! \class SharingMethodInfo \brief The SharingMethodInfo class encapsulate information of a single transfer method. @@ -98,15 +77,7 @@ SharingMethodInfo::SharingMethodInfo() */ SharingMethodInfo &SharingMethodInfo::operator=(const SharingMethodInfo &other) { - Q_D(SharingMethodInfo); - d->displayName = other.displayName(); - d->subtitle = other.subtitle(); - d->methodId = other.methodId(); - d->methodIcon = other.methodIcon(); - d->accountId = other.accountId(); - d->shareUIPath = other.shareUIPath(); - d->capabilities = other.capabilities(); - d->supportsMultipleFiles = other.supportsMultipleFiles(); + *d_ptr = *other.d_ptr; return *this; } @@ -114,7 +85,7 @@ SharingMethodInfo &SharingMethodInfo::operator=(const SharingMethodInfo &other) Copies \a other to this instance. */ SharingMethodInfo::SharingMethodInfo(const SharingMethodInfo &other): - d_ptr(new SharingMethodInfoPrivate(other.d_ptr)) + d_ptr(new SharingMethodInfoPrivate(*other.d_ptr)) { } diff --git a/lib/sharingmethodinfo.h b/lib/sharingmethodinfo.h index 6ecc688..5e1a75b 100644 --- a/lib/sharingmethodinfo.h +++ b/lib/sharingmethodinfo.h @@ -78,7 +78,7 @@ class SharingMethodInfo bool supportsMultipleFiles() const; private: - SharingMethodInfoPrivate *d_ptr; + SharingMethodInfoPrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(SharingMethodInfo); }; diff --git a/lib/sharingpluginloader.h b/lib/sharingpluginloader.h index b5ee9b8..8947a09 100644 --- a/lib/sharingpluginloader.h +++ b/lib/sharingpluginloader.h @@ -46,7 +46,7 @@ class SharingPluginLoader : public QObject void pluginsLoaded(); private: - SharingPluginLoaderPrivate *d_ptr; + SharingPluginLoaderPrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(SharingPluginLoader) }; diff --git a/lib/sharingpluginloader_p.h b/lib/sharingpluginloader_p.h index 3df2bf8..fb37d6b 100644 --- a/lib/sharingpluginloader_p.h +++ b/lib/sharingpluginloader_p.h @@ -57,10 +57,10 @@ private slots: private: static QStringList pluginList(); - SharingPluginLoader *q_ptr; + SharingPluginLoader *q_ptr = nullptr; Q_DECLARE_PUBLIC(SharingPluginLoader) - bool m_loading; + bool m_loading = false; Accounts::Manager m_accountManager; QTimer m_fileWatcherTimer; QFileSystemWatcher m_fileWatcher; diff --git a/lib/transferdbrecord.h b/lib/transferdbrecord.h index 26a725a..ca43e66 100644 --- a/lib/transferdbrecord.h +++ b/lib/transferdbrecord.h @@ -71,11 +71,11 @@ class TransferDBRecord // TODO: Maybe this could use QVariantList internally to ease of pain of keeping thigs up to date // when database structure / fields change - int transfer_id; - int transfer_type; - int status; - qint64 size; - double progress; + int transfer_id = 0; + int transfer_type = 0; + int status = 0; + qint64 size = 0; + double progress = 0; QString plugin_id; QString url; QString timestamp; @@ -85,8 +85,8 @@ class TransferDBRecord QString service_icon; QString application_icon; QString thumbnail_icon; - bool cancel_supported; - bool restart_supported; + bool cancel_supported = false; + bool restart_supported = false; }; bool operator ==(const TransferDBRecord &left, const TransferDBRecord &right); diff --git a/lib/transferengineclient.cpp b/lib/transferengineclient.cpp index d1cf21d..653b194 100644 --- a/lib/transferengineclient.cpp +++ b/lib/transferengineclient.cpp @@ -99,7 +99,7 @@ CallbackInterface::~CallbackInterface() class TransferEngineClientPrivate { public: - TransferEngineInterface *m_client; + TransferEngineInterface *m_client = nullptr; }; /*! diff --git a/lib/transferengineclient.h b/lib/transferengineclient.h index 8f24951..036f16d 100644 --- a/lib/transferengineclient.h +++ b/lib/transferengineclient.h @@ -39,7 +39,7 @@ class CallbackInterface { ~CallbackInterface(); private: - CallbackInterfacePrivate *d_ptr; + CallbackInterfacePrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(CallbackInterface) friend class TransferEngineClient; }; @@ -85,7 +85,7 @@ class TransferEngineClient : public QObject bool notificationsEnabled() const; private: - TransferEngineClientPrivate *d_ptr; + TransferEngineClientPrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(TransferEngineClient) friend class DeclarativeTransferInterface; diff --git a/src/transferengine.h b/src/transferengine.h index e45832c..9c9c3df 100644 --- a/src/transferengine.h +++ b/src/transferengine.h @@ -102,7 +102,7 @@ public Q_SLOTS: void activeTransfersChanged(); private: - TransferEnginePrivate *d_ptr; + TransferEnginePrivate *d_ptr = nullptr; Q_DECLARE_PRIVATE(TransferEngine) }; diff --git a/src/transferengine_p.h b/src/transferengine_p.h index d881b91..6540529 100644 --- a/src/transferengine_p.h +++ b/src/transferengine_p.h @@ -73,7 +73,7 @@ public Q_SLOTS: private: // Map for transferId, timestamps QMap m_activityMap; - QTimer *m_timer; + QTimer *m_timer = nullptr; }; class TransferEnginePrivate: QObject @@ -125,10 +125,10 @@ public Q_SLOTS: private: QMap m_plugins; QMap m_keyTypeCache; - bool m_notificationsEnabled; - QTimer *m_delayedExitTimer; - ClientActivityMonitor *m_activityMonitor; - TransferEngine *q_ptr; + bool m_notificationsEnabled = false; + QTimer *m_delayedExitTimer = nullptr; + ClientActivityMonitor *m_activityMonitor = nullptr; + TransferEngine *q_ptr = nullptr; QVariantList m_defaultActions; QVariant m_showTransfersAction; Q_DECLARE_PUBLIC(TransferEngine)