Closed 9-11 closed 7 years ago
Diff:
--- ./src/NetBox/WinSCPFileSystem.cpp Git-bbf271c03814c04cffe5f73454bdc8300a887e11
+++ ./src/NetBox/WinSCPFileSystem.cpp Wed Jul 05 16:10:08 2017
@@ -2743,6 +2743,7 @@
{
Result = -1;
}
+ UpdatePanel();
return Result;
}
Соберу, перепроверю. Не собрался по моей вине (и я зря коммент удалил :( ).
О! Порядок в танковых войсках! Не падает. Проверял на Notepad через ассоцииаци
NetBox_2.4.3.509_x86_AMD64_fix.zip
Можно фикс коммитить.
FIXED
Чтобы воспроизвести падение:
Причина в следующем. Far хранит список элементов панели плагина. Каждый элемент имеет поле PluginPanelItem.UserData.Data, в котором NetBox хранит соответствующий этому элементу объект TRemoteFile. После сохранения файла в пункте 2, NetBox перечитывает директорию, удаляя старые объекты TRemoteFile и создавая новые. Но Far не обновляет список элементов панели, поэтому при новом открытии файла (пункт 3) NetBox пытается использовать старый указатель из PluginPanelItem.UserData.Data, который уже освобождён.
Возможный фикс состоит в том, чтобы вставить в самый конец функции
intptr_t TWinSCPFileSystem::UploadFiles(bool Move, OPERATION_MODES OpMode, bool Edit, UnicodeString & DestPath)
вызовUpdatePanel()
:intptr_t TWinSCPFileSystem::UploadFiles(bool Move, OPERATION_MODES OpMode, bool Edit, UnicodeString & DestPath)
{
...
+UpdatePanel();
return Result;
}