KConfigGroup read/write bug for QByteArray

David Jarvie lists at astrojar.org.uk
Sun Sep 16 13:41:27 BST 2007


Using KConfigGroup::writeEntry() to write a QByteArray and then 
KConfigGroup::readEntry() to read it back in again can result in a value 
which is different from the original value, because the value written to the 
config file is converted to UTF8 when it is read back, so that all byte 
values >= 0x7F are changed to multi-byte values.

If this is the desired behaviour (which I doubt), it's difficult to convert 
back from UTF8 since calling QString::fromUtf8 truncates the value as soon as 
it encounters a null byte. In data arrays, null bytes are common.

The conversion occurs at the KConfigINIBackEnd level - reading from the config 
file using QFile seems to automatically convert the input to UTF8. Since at 
this level the config entry type is unknown, the solution looks like 
KConfigGroup::writeEntry() should write all QByteArray byte values >= 0x7F in 
hex representation. That way, the QFile read won't change them, and the 
correct value will be accessible to KConfigGroup for conversion.

I'll produce a patch if my proposed solution is acceptable. Comments please.

-- 
David Jarvie.
KAlarm author and maintainer.
http://www.astrojar.org.uk/kalarm




More information about the kde-core-devel mailing list