diff options
-rw-r--r-- | src/corelib/io/qsettings_win.cpp | 14 | ||||
-rw-r--r-- | tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 10 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp index caa8c84f24..00a333098d 100644 --- a/src/corelib/io/qsettings_win.cpp +++ b/src/corelib/io/qsettings_win.cpp @@ -759,11 +759,17 @@ QStringList QWinSettingsPrivate::children(const QString &uKey, ChildSpec spec) c for (const RegistryKey &r : regList) { HKEY parent_handle = r.handle(); - if (parent_handle == 0) - continue; + if (parent_handle == 0) { + if (fallbacks) + continue; + break; + } HKEY handle = openKey(parent_handle, KEY_READ, rKey, access); - if (handle == 0) - continue; + if (handle == 0) { + if (fallbacks) + continue; + break; + } if (spec == AllKeys) { NameSet keys; diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index 094d04252b..48087b6a65 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -2018,6 +2018,16 @@ void tst_QSettings::testChildKeysAndGroups() l.sort(); QCOMPARE(l, QStringList() << "bar" << "foo"); } + { + QSettings settings3(format, QSettings::UserScope, "software.org", "application"); + settings3.setFallbacksEnabled(false); + settings3.beginGroup("alpha"); + QCOMPARE(settings3.childGroups(), QStringList()); + settings3.setFallbacksEnabled(true); + QStringList children = settings3.childGroups(); + children.sort(); + QCOMPARE(children, QStringList({"beta", "gamma"})); + } } void tst_QSettings::testUpdateRequestEvent() |