Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Total Commander (Часть 8)

Модерирует : gyra, Maz

articlebot (20-03-2016 21:01): Обсуждение продолжается в части 9  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При сборке вылезла туча предупреждений о несовпадении размеров целочисленных переменных и параметров
 
Подвесил я его тестово на CAB, запускаю ТК (8.0 бэта 17а х64), выбираю 4 мелкие гифки на пару кило, жмакаю Alt+F5, выбираю в выпадалке свой CAB, тут же мжу (для теста) "настроить", и лицезрею подряд 4 утечки памяти с зависанием ТК. Потом ТК развис через минуты две и ни капли не открылось ничего вообще.
Тупо скачет рывками, отьедая в пределе 8 гигов на процесс тотала (у меня 11,5 гиг)

 
Я пробовал, но одной перекомпиляции оказалось недостаточно, плагин крэшится. Надо закапываться в код, отлаживать, выискивать и исправлять места, которые оказались завязаны на 32 бита.
 
А у меня вообще не компилируется, не хватает класса, исходники которого в архиве отсутствуют. Хэдер ArchiverManager.h подключается, а в архиве его нет.
 
Да уж, не представляю, как они это собирали, свободно присваивая указатели и итераторы векторов, пропуская типы констант, используя переменные цикла после оного... И это почти в каждом CPP-файле. На такое посмотришь, и страшно становится с этим что-то ещё делать.
...
Неужели оно собралось...
...
В функции bool ArcManager::AsseptExcludeID(HANDLE hArcFile, CArchiveDescription *pad) при текущем раскладе вообще утечка памяти.
...
Очень похоже, что код заброшен, будучи в незавершенном состоянии.

 
При запуске сначала зависала с выделением гигабайт памяти, ошибка была в функции void explode_string(string &str, vector<string> &strings):
...
Из-за различия в разрядности типов получался бесконечный цикл с выделением памяти (сравнивались 0xFFFFFFFF и 0xFFFFFFFFFFFFFFFF).
 
Ну и в недописанной вышеупомянутой функции AsseptExcludeID утечку перекрыл, вообще функцию выкинул (в самом её начале раскомментировал return false) - не понял, зачем она нужна, вызывается из CanYouHandleThisFile.

 
С фоновым режимом возиться желания нет, это надо все функции проверять на возможность работы в фоновых потоках, а код, как я уже писал, особой удобочитаемостью не отличается.
 
Думаю, проблема в том, что размер файлов больше 4 ГБ, поэтому в 32-битную переменную такие числа уже не умещаются, вот и происходит потеря разрядов. Что примечательно, похоже, в 2010 студии функция преобразования при переполнении возвращает максимально возможное число вместо младшей части числа, как было в старой версии.
 
Вот обновленная версия мультиарка с поддержкой 64-битных размеров:

 
Я эту версию никуда выкладывать не планирую. Не могу поручиться за отсутствие багов в тех исходниках, с которых я её собирал (тем более, я лично их там находил), и не имею желания заниматься их исправлением.

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 23:16 03-10-2013
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Total Commander (Часть 8)
articlebot (20-03-2016 21:01): Обсуждение продолжается в части 9


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru