[Interest] Calling QSettings::value() with an empty key name triggers an assert

Andre Somers andre at familiesomers.nl
Thu Oct 3 07:31:27 CEST 2013


Op 2-10-2013 17:35, Etienne Sandré-Chardonnal schreef:
> Dear all,
>
> I'm under windows, where registry supports a default value per key. 
> This means, a value with an empty name.
>
> Using QSettings::setValue("", value) and QSettings::value("") works 
> fine and as expected in release mode. It creates and read default 
> values in the registry.
>
> However, I was surprised that in debug mode, this triggers an assert 
> due to the empty string.
>
> I think that:
> 1) This may be due to empty names which are not supported in other 
> platforms. In that case, it should be stated in the doc that the name 
> must not be empty.
> 2) Calling an Q_ASSERT on this is quite rude... It should fail but 
> cleanly, maybe with a qWarning.
> 3) Isn't there a way to port empty value names to other platforms?
>
> Qt 4.8.1, should a bug be filed?
>
No. Your idea that you should use en empty string as the key is wrong. 
The documentation states:
> On Windows, it is possible for a key to have both a value and subkeys. 
> Its default value is accessed by using "Default" or "." in place of a 
> subkey:

So, you're just trying to access the default value in the wrong way. On 
windows, empty key names are also not supported, so the assert is 
correct. The assert is also, IMHO, a better solution than a rather 
silent fail.

André

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131003/e54443ed/attachment.html>


More information about the Interest mailing list