вторник, 19 октября 2010 г.

Named Folders 3.0. Первый снапшот

Выложил первый снапшот Named Folders 3.0. Основные изменения: рефакторинг и чистка кода, перевод плагина на FAR API 2.0 и юникод, выпуск 64-битной версии.

Отмечу следующие моменты. Плагин использует библиотеку stlsoft. Без вот этого фикса плагин не компилируется - выдает ошибку "fatal error C1189: #error : reverse_iterator form not recognised". По крайней мере, на stlsoft версии 1.9.69 - 1.9.101 (текущая).

Далее. В коде плагина я исправил две неприятные ошибки. О первой я написал подробно - этот баг давно меня раздражал, т.к. не позволял мне запускать Paint.NET. Вторая ошибка - потерянная С++-ссылка в коде, которая приводила к чудовищным тормозам фильтра в меню. Проблемный код был таким:
class A {
 std::pair const& m_Ref;
 A(std::pair const& srcRef) : m_Ref(srcRef) {}
}
...
A a(std::make_pair(1,1));
Изначально в конструктор класса A передавалась ссылка на локальную переменную, действительную во всей области действия экземпляра класса A. Все было в порядке. Потом, в какой-то версии плагина (причем весьма давней), класс A стал использоваться в двух функциях.. и во второй функции он уже инициализировался временной переменной, область действия которой была значительно уже области действия класса A. Возникла битая ссылка. Самое печальное, что баг проявлялся только в релизе и только на Win x64 (та же dll-ка на XP работала без проблем). Так что использование const& для членов класса - весьма опасная практика.

Для x64 плагин скомпилировался подозрительно легко. Все что я сделал - объявил макрос WIN64, да настроил x64-конфигурацию в проекте. Думаю, что ошибки здесь еще выплывут.

Появилась дополнительная проблема с размерами плагинов. У первых снапшотов они гигантские. Если раньше плагин весил на уровне 380 кб, то теперь 700 и 1100 для версий x86 и x64 соответственно. С этим, естественно, придется разбираться.

Вот и все замечания. Теперь буду править ошибки, периодически обновлять снапшоты и вести дело к первому релизу.

Комментариев нет:

Отправить комментарий