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