summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qsettings_win.cpp14
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp10
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()