MyTetra Share
Делитесь знаниями!
Исправление Gvenview если есть segfault при изменении размеров картинки
Время создания: 10.01.2020 13:50
Автор: xintrea
Текстовые метки: linux, gwenview, segfault, сегфолт, исправление
Раздел: Компьютер - Linux - Разные программы в Linux
Запись: xintrea/mytetra_syncro/master/base/1578653428hbi0cvssqz/text.html на raw.github.com

Просмотрщик Gvenview все никак не могут довести до ума, а другого вмеяемого и удобного просмотрщика под Linux в настоящий момент не наблюдается.


Часто на некоторых картинках Gvenview вылетает с ошибкой сегментирования.


Отладка показала, что проблема в файле /lib/documentview/rasterimageview.cpp, в методе updateFromScaler().


Временное решение - полностью закомментировать проблемный вызов:



cmsDoTransform(d->mDisplayTransform, bytes, bytes, static_cast<cmsUInt32Number>(size) );



Непонятно, что он обновляет на экране, но без него работает, и сегфолта нет.


Пример исправленного кода:



void RasterImageView::updateFromScaler(int zoomedImageLeft, int zoomedImageTop, const QImage& image)

{

if (d->mApplyDisplayTransform) {

if (!d->mDisplayTransform) {

d->updateDisplayTransform(image.format());

}

if (d->mDisplayTransform) {

quint8 *bytes = const_cast<quint8*>(image.bits());


// cmsDoTransform(d->mDisplayTransform, bytes, bytes, image.width() * image.height() );

}

}



 
MyTetra Share v.0.59
Яндекс индекс цитирования