Victor_VG

Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Легонько глянул по исходникам ./pluins/arclite/attr.cpp :: 466 Код: if ((in_arc->GetArchiveProperty(kpidMethod, prop.ref()) == S_OK && prop.is_str()) || (in_arc->GetProperty(0, kpidMethod, prop.ref()) == S_OK && prop.is_str())) { std::list<std::wstring> m_list = split(prop.get_str(), L' '); static const wchar_t *known_methods[] = { c_method_lzma, c_method_lzma2, c_method_ppmd, c_method_deflate, c_method_deflate64 }; | и похоже, что вот она "подготовка падения" в строке 469 Код: static const wchar_t *known_methods[] = { c_method_lzma, c_method_lzma2, c_method_ppmd, c_method_deflate, c_method_deflate64 }; | - судя по событиям при пустом Zip архиве плагин отдаёт 7z.dll команду применить в качестве кодека LZMA и это вызывает падение. Если разделить типы контейнера и вынести Zip в отдельный If такой проверкой в алгоритме: Код: If IsArcType(Zip) Then static const wchar_t *known_methods[] = { c_method_deflate, c_method_deflate64, c_method_lzma, c_method_lzma2, c_method_ppmd }; Else static const wchar_t *known_methods[] = { c_method_lzma, c_method_lzma2, c_method_ppmd, c_method_deflate, c_method_deflate64 }; End; | падения из-за случайного создания архивов Zip с LZMA кодированием должны прекратится. А 7zFM с пустыми Zip ведёт себя иначе: если пытаться добавить в такой архив файл командой ДОБАВИТ из его панели - получим ошибку не поддерживаемой операции, если через Drag & Drop - операция выполнится успешно. Если же попытаться обновить пустой архив командой 7z a test.zip file или 7z u test.zip file - в обоих случаях операция выполнится успешно.
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
| Всего записей: 35207 | Зарегистр. 31-07-2002 | Отправлено: 12:02 27-11-2024 | Исправлено: Victor_VG, 13:10 27-11-2024 |
|