diff --git a/src/mvvmcore/settingsviewmodel.cpp b/src/mvvmcore/settingsviewmodel.cpp index 05ae8b4..058fba4 100644 --- a/src/mvvmcore/settingsviewmodel.cpp +++ b/src/mvvmcore/settingsviewmodel.cpp @@ -2,7 +2,6 @@ #include "settingsviewmodel_p.h" #include "coreapp.h" #include "qtmvvm_logging_p.h" -#include "settingssetuploader_p.h" #include "qsettingsaccessor.h" using namespace QtMvvm; @@ -121,10 +120,9 @@ void QtMvvm::SettingsViewModel::setAccessor(ISettingsAccessor *accessor) this, &SettingsViewModel::valueChanged); disconnect(d->accessor, &ISettingsAccessor::entryRemoved, this, &SettingsViewModel::valueChanged); + if(d->accessor->parent() == this) + d->accessor->deleteLater(); } - - if(d->accessor->parent() == this) - d->accessor->deleteLater(); d->accessor = accessor; if(d->accessor) { diff --git a/tests/auto/mvvmcore/settingsconfigloader/invalidDocument.xml b/tests/auto/mvvmcore/settingsconfigloader/invalidDocument.xml new file mode 100644 index 0000000..fb2c408 --- /dev/null +++ b/tests/auto/mvvmcore/settingsconfigloader/invalidDocument.xml @@ -0,0 +1,5 @@ + + + +
+ diff --git a/tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro b/tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro index 66a7f62..de0d45e 100644 --- a/tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro +++ b/tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro @@ -32,4 +32,5 @@ DISTFILES += \ includeDocument_section.xml \ includeDocument_group.xml \ includeDocument_entry.xml \ - includeDocument_filtered.xml + includeDocument_filtered.xml \ + invalidDocument.xml diff --git a/tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp b/tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp index b583d4b..6832e2a 100644 --- a/tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp +++ b/tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp @@ -107,6 +107,12 @@ void SettingsConfigLoaderTest::testConfigLoader_data() << QStringList{} << true << createIncludesSetup(); + + QTest::newRow("invalidDocument") << QStringLiteral(SRCDIR "/invalidDocument.xml") + << QStringLiteral("dummy") + << QStringList{} + << false + << Setup{}; } void SettingsConfigLoaderTest::testConfigLoader()