[sisyphus] liblensfun vs g++
Dmitry V. Levin
ldv на altlinux.org
Ср Авг 19 04:41:07 MSD 2009
On Mon, Aug 17, 2009 at 06:25:39PM +0300, Victor Forsyuk wrote:
[...]
> Если бы у меня было время всё бросить и сесть с отладчиком локализуя до 100
> строк кода я бы не отказал себе в удовольствии самому покопаться. Но эта
> задача у меня в самом конце TODO, а если это действительно баг в gcc, то его
> стоило бы локализовать пораньше...
>
> Проблема обнаружилась в liblensfun. Эту библиотеку сейчас использует ufraw.
> Скомпилированный при помощи gcc 4.3 код отлично работает в ufraw. Для
> компиляции gcc 4.4 пришлось приложить патчик на тему const char, но он тут
> даже теоретически не может быть при чем, поскольку чинит сборку своего
> makedep и ABI посему никак сломать не мог.
>
> Если использовать gcc 4.4, то даже с "-O0" компилируется нерабочий код.
> Симптом: ufraw при открытии любого файла зависает, вероятно где-то
> зацикливаясь(?).
Поведение g++ изменилось между 4.3 и 4.4; если это не regression, то, видимо,
надо патчить liblensfun (см. патч).
--
ldv
----------- следующая часть -----------
--- lensfun/libs/lensfun/lens.cpp
+++ lensfun/libs/lensfun/lens.cpp
@@ -301,6 +301,7 @@ const char *lfLens::GetDistortionModelDesc (
if (params)
*params = param_ptlens;
return "PanoTools lens model";
+ default: break;
}
if (details)
@@ -335,6 +336,7 @@ const char *lfLens::GetTCAModelDesc (
if (params)
*params = param_linear;
return "Linear";
+ default: break;
}
if (details)
@@ -372,6 +374,7 @@ const char *lfLens::GetVignettingModelDesc (
if (params)
*params = param_pa;
return "6th order polynomial";
+ default: break;
}
if (details)
@@ -405,6 +408,7 @@ const char *lfLens::GetLensTypeDesc (lfLensType type, const char **details)
if (details)
*details = "Ref: http://wiki.panotools.org/Equirectangular_Projection";
return "Equirectangular";
+ default: break;
}
if (details)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 197 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20090819/5ec982ca/attachment.bin>
Подробная информация о списке рассылки Sisyphus