воскресенье, 22 мая 2022 г.

Утечка FastReport

Как же мне надоело, что в сторонних продуктах для Delphi постоянно всплывают ошибки! Когда я работал с экосистемой .NET, тоже сталкивался с ошибками, но гораздо (!) меньше. Интересно, как обстоят дела с экосистемой Java?
За последний месяц ине пришлось исправить одну ошибку в модулей сериализации, одну в библиотеке EhLib, а теперь вот проблемы с FastReport!
Работая с отчетом, содержимое которого экспортируется в Excel, я заметил, что после закрытия программы FastMM ругается на утечки памяти:
FF-FMM

Я решил попробовать поискать в исходниках по строчке "TfrxIEMStyle.Create" и вот что обнаружилось
Resize-of-FF-find

В конструкторе этого объекта как раз выделялась память, которая очень была похожа по описанию, которое выдал FastMM
FF-const

Потом я просто стал проверять, все найденные участки кода и в самом последнем обнаружил выделение памяти, которое впоследствии не освобождалось
Resize-of-FF-bug

Вылечилось это элементарным добавлением вызова деструктора
Resize-of-FF-desct

Ну и конечно же надо пересобрать компоненты FastRerpot'а с помощью их утилиты
7