[devel] Странности с QT

Paul Wolneykien manowar на altlinux.org
Ср Ноя 2 22:10:11 UTC 2011


  Всем привет.

  Вопрос, прежде всего, к специалистам по QT.

  На днях боролся с неполадками в Scribus
(http://bugs.scribus.net/view.php?id=10355). Дело оказалось в
преобразовании чисел, а при отладке я обнаружил, как мне кажется,
странное поведение QByteArray, QString либо QChar — точно сказать не могу:

(gdb) p bb->d->data
$1 = 0x8d83fb0 "    "
(gdb) n
44                      bb = bb.insert(0, in.at(3).cell());
(gdb) p bb->d->data
$2 = 0x9651068 "   \305 "
(gdb) n
45                      bb = bb.insert(1, in.at(2).cell());
(gdb) p bb->d->data
$3 = 0x9651068 "  \320 \305 "
(gdb) n
46                      bb = bb.insert(2, in.at(1).cell());
(gdb) p bb->d->data
$4 = 0x9651068 " \323 \320 \305 "
(gdb) n
58                      bb = bb.insert(3, in.at(0).cell());
(gdb) p bb->d->data
$5 = 0x9651068 "\306 \323 \320 \305 "

  Как видно, в bb добавляются не только байты из входной строки, но и
пробелы. Судя по последующему коду (http://clck.ru/OA-n) автор не
предполагал их наличия.

  Проблему я решил, избавившись от использования как insert, так и
QString (http://clck.ru/OA0M). Однако интересно, является ли такое
поведение insert нормальным? Подумал, вдруг эта проблема затрагивает не
только Scribus.


    Паша.



Подробная информация о списке рассылки Devel