On Tue, Aug 18, 2009 at 02:39:24AM +0400, Dmitry V. Levin wrote: > On Thu, Aug 13, 2009 at 07:04:39PM +0300, Kirill A. Shutemov wrote: > > 2009/8/13 Victor Forsyuk : > [...] > > > Я вот сижу и думаю (нет, это не по поводу этого кода), если даже с полностью > > > выключенной оптимизацией компилятор (gcc 4.4) создает код, отказывающийся > > > работать, тогда как скомпилированный gcc 4.3 работает - стоит разбираться с > > > кодом или это в любом случае регрессия компилятора? > > > > Зависит от. > > > > > Кому-то интересно будет посмотреть? > > > > Давай. Только не два мегабайта кода. Локализуй до 50-100 строк, не больше. > > 792 for (i = 0; ; i++) > 793 { > 794 const char *model_name; > 795 lfTCAModel model = LF_TCA_MODEL_NONE + i; > 796 model_name = lf_get_tca_model_desc (model, NULL, NULL); > 797 if (!model_name) > 798 break; > 799 gtk_combo_box_append_text (GTK_COMBO_BOX (data->LensTCAModel), model_name); > 800 if (model == CFG->lens_tca.Model) > 801 active_index = i; > 802 } > > При выполнении ufraw_lens_ui.c:798 происходит stack corruption. > Вызов lf_get_tca_model_desc ведёт в странно собирающуюся cpp'шную библиотеку > liblensfun, про использование которой в ufraw пишут забавные вещи: > http://ufraw.sourceforge.net/lensfun.html Попробовал свежий компилятор и посмотрел немного внимательнее. То, что я сперва принял за stack corruption, таковым не является, но вот внутри lfLens::GetTCAModelDesc действительно происходят странные вещи, в результате которых вышепроцитированный цикл не прекращается. -- ldv