[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