From 5f20eedb6e0f11731848f4252d778cacebfd4459 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 12 Feb 2019 07:21:35 -0500 Subject: [partition] Use swap-choice member, not the combobox pointer - Store changes to the selected swap-choice when the combobox changes - Use that member instead of dereferencing the combobox This avoids nullptr crashes when the combobox isn't even created (e.g. when there is only one swap choice). --- src/modules/partition/gui/ChoicePage.cpp | 13 +++++++++++-- src/modules/partition/gui/ChoicePage.h | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index f62af013f..ee7905c33 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -318,7 +318,7 @@ ChoicePage::setupChoices() this, &ChoicePage::onActionChanged ); if ( m_eraseSwapChoiceComboBox ) connect( m_eraseSwapChoiceComboBox, QOverload::of(&QComboBox::currentIndexChanged), - this, &ChoicePage::onActionChanged ); + this, &ChoicePage::onEraseSwapChoiceChanged ); CALAMARES_RETRANSLATE( m_somethingElseButton->setText( tr( "Manual partitioning
" @@ -428,6 +428,15 @@ ChoicePage::onActionChanged() } } +void +ChoicePage::onEraseSwapChoiceChanged() +{ + if ( m_eraseSwapChoiceComboBox ) + { + m_eraseSwapChoice = static_cast( m_eraseSwapChoiceComboBox->currentData().toInt() ); + onActionChanged(); + } +} void ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) @@ -448,7 +457,7 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice ) m_encryptWidget->passphrase(), gs->value( "efiSystemPartition" ).toString(), CalamaresUtils::GiBtoBytes( gs->value( "requiredStorageGB" ).toDouble() ), - static_cast( m_eraseSwapChoiceComboBox->currentData().toInt() ) + m_eraseSwapChoice }; if ( m_core->isDirty() ) diff --git a/src/modules/partition/gui/ChoicePage.h b/src/modules/partition/gui/ChoicePage.h index 527a59e1a..baf575d49 100644 --- a/src/modules/partition/gui/ChoicePage.h +++ b/src/modules/partition/gui/ChoicePage.h @@ -116,8 +116,10 @@ private slots: void onEncryptWidgetStateChanged(); void onHomeCheckBoxStateChanged(); - /** @brief Calls applyActionChoice() as needed. */ + /// @brief Calls applyActionChoice() as needed. void onActionChanged(); + /// @brief Calls onActionChanged() as needed. + void onEraseSwapChoiceChanged(); private: void updateNextEnabled(); -- cgit v1.2.2