[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    KConfigGroup read/write bug for QByteArray
From:       David Jarvie <lists () astrojar ! org ! uk>
Date:       2007-09-16 12:41:27
Message-ID: 200709161341.27977.lists () astrojar ! org ! uk
[Download RAW message or body]

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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic