ShareDialog: Fix crash, properly init member pointers
authorMichael Schuster <michael@schuster.ms>
Fri, 29 May 2020 16:12:36 +0000 (18:12 +0200)
committerMichael Schuster <michael@schuster.ms>
Fri, 29 May 2020 16:12:36 +0000 (18:12 +0200)
_manager ptr only got initialized in the constructor when sharingPossible was set to true

Changes:
- Move member ptr inits from constructor to the header file's class definition
- Init _manager: set to nullptr too
- Add check for _manager to avoid crash in showSharingUi()

Signed-off-by: Michael Schuster <michael@schuster.ms>
src/gui/sharedialog.cpp
src/gui/sharedialog.h

index 91081e057e9cff6e6a17c4075b60f6f85d14a6f5..13f437c0a352dcce71c539fb5fd4af57182aaeaf 100644 (file)
@@ -52,10 +52,6 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
     , _maxSharingPermissions(maxSharingPermissions)
     , _privateLinkUrl(accountState->account()->deprecatedPrivateLinkUrl(numericFileId).toString(QUrl::FullyEncoded))
     , _startPage(startPage)
-    , _linkWidgetList({})
-    , _emptyShareLinkWidget(nullptr)
-    , _userGroupWidget(nullptr)
-    , _progressIndicator(nullptr)
 {
     setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
     setAttribute(Qt::WA_DeleteOnClose);
@@ -295,7 +291,9 @@ void ShareDialog::showSharingUi()
     }
 
     if (theme->linkSharing()) {
-        _manager->fetchShares(_sharePath);
+        if(_manager != nullptr) {
+            _manager->fetchShares(_sharePath);
+        }
     }
 }
 
@@ -378,4 +376,4 @@ void ShareDialog::changeEvent(QEvent *e)
     QDialog::changeEvent(e);
 }
 
-}
+} // namespace OCC
index 849dc6ec5daaa7897c9a3b98740bf0e7e3f18199..7f03e29beec25136b4cee3a6bd82244b0668449b 100644 (file)
@@ -88,13 +88,14 @@ private:
     QByteArray _numericFileId;
     QString _privateLinkUrl;
     ShareDialogStartPage _startPage;
-    ShareManager *_manager;
+    ShareManager *_manager = nullptr;
 
-    QList<ShareLinkWidget*> _linkWidgetList;
-    ShareLinkWidget* _emptyShareLinkWidget;
-    ShareUserGroupWidget *_userGroupWidget;
-    QProgressIndicator *_progressIndicator;
+    QList<ShareLinkWidget*> _linkWidgetList = {};
+    ShareLinkWidget* _emptyShareLinkWidget = nullptr;
+    ShareUserGroupWidget *_userGroupWidget = nullptr;
+    QProgressIndicator *_progressIndicator = nullptr;
 };
-}
+
+} // namespace OCC
 
 #endif // SHAREDIALOG_H