Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
5.0.1
-
None
-
Windows 7 (both 32-bit and 64-bit) and OS X 10.8.2
Description
If you set a value to a QSettings and then retrieve it, you will get some unexpected results on Windows 7 (be it 32-bit or 64-bit) and OS X 10.8.2 while it works as expected on Ubuntu 12.04 (both 32-bit and 64-bit).
Attached is some code that illustrates the issue at hand.
Output on Windows 7:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test(pValue);
---> pValue: 4294967295
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967295
---> retrievedValue [Actual]: 0
---------------------------------------
test(pValue);
---> pValue: 4294967296
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967296
---> retrievedValue [Actual]: 0
---------------------------------------
test(pValue);
---> pValue: 4294967297
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967297
---> retrievedValue [Actual]: 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
and on OS X 10.8.2:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test(pValue);
---> pValue: 4294967295
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967295
---> retrievedValue [Actual]: 18446744073709551615
---------------------------------------
test(pValue);
---> pValue: 4294967296
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967296
---> retrievedValue [Actual]: 0
---------------------------------------
test(pValue);
---> pValue: 4294967297
QSettings settings;
settings.setValue("Test", pValue);
qulonglong retrievedValue = settings.value("Test").toULongLong();
---> retrievedValue [Expected]: 4294967297
---> retrievedValue [Actual]: 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~