diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 1fcaab6ac..5dae987f8 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -655,13 +655,13 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) if ( !current.isValid() ) return; - QString homePartitionPath; + QString* homePartitionPath = new QString(); bool doReuseHomePartition = m_reuseHomeCheckBox->isChecked(); // NOTE: using by-ref captures because we need to write homePartitionPath and // doReuseHomePartition *after* the device revert, for later use. ScanningDialog::run( QtConcurrent::run( - [ this, current, &homePartitionPath, &doReuseHomePartition ] + [ this, current ]( QString* homePartitionPath, bool doReuseHomePartition ) { QMutexLocker locker( &m_coreMutex ); @@ -732,11 +732,11 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) { // Find out is the selected partition has a rootfs. If yes, then make the // m_reuseHomeCheckBox visible and set its text to something meaningful. - homePartitionPath.clear(); + homePartitionPath->clear(); foreach ( const OsproberEntry& osproberEntry, m_core->osproberEntries() ) if ( osproberEntry.path == partPath ) - homePartitionPath = osproberEntry.homePath; - if ( homePartitionPath.isEmpty() ) + *homePartitionPath = osproberEntry.homePath; + if ( homePartitionPath->isEmpty() ) doReuseHomePartition = false; PartitionActions::doReplacePartition( m_core, @@ -744,10 +744,10 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) selectedPartition, m_encryptWidget->passphrase() ); Partition* homePartition = KPMHelpers::findPartitionByPath( { selectedDevice() }, - homePartitionPath ); + *homePartitionPath ); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); - if ( homePartition ) + if ( homePartition && doReuseHomePartition ) { PartitionInfo::setMountPoint( homePartition, "/home" ); gs->insert( "reuseHome", true ); @@ -758,10 +758,11 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) } } } - } ), - [&] + }, homePartitionPath, doReuseHomePartition ), + [ = ] { - m_reuseHomeCheckBox->setVisible( !homePartitionPath.isEmpty() ); + m_reuseHomeCheckBox->setVisible( !homePartitionPath->isEmpty() ); + delete homePartitionPath; if ( m_isEfi ) setupEfiSystemPartitionSelector();