View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001924 | Plugins | FTP (old) | public | 2011-11-19 19:02 | 2011-11-28 14:26 |
Reporter | 2useven10 | Assigned To | DrKnS | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001924: Ftp plugin crashes if can't load dependent dll | ||||
Description | Ftp плагин (думаю не только он) падает при выводе сообщения о невозможности загрузить свои вспомогательные модули (*.fll) в Far3. В фар2 сообщение выводится нормально, падения нет. | ||||
Steps To Reproduce | Переименовать Plugins/FTP/lib/ftpProgress.fll, перезапустить фар3, через AltF1 выбрать ftp плагин. | ||||
Additional Information | Патч есть. Сам не коммичу - не чувствую себя достаточно уверенным в этой области. | ||||
Tags | No tags attached. | ||||
|
PlugLoadError.diff (2,185 bytes)
Index: PluginA.cpp =================================================================== --- PluginA.cpp (revision 6885) +++ PluginA.cpp (working copy) @@ -1295,7 +1295,7 @@ return ret; } -#define GetPluginGuid(n) &reinterpret_cast<Plugin*>(n)->GetGUID() +#define GetPluginGuid(n) (n ? &reinterpret_cast<Plugin*>(n)->GetGUID() : nullptr) int WINAPI FarMessageFnA(INT_PTR PluginNumber,DWORD Flags,const char *HelpTopic,const char * const *Items,int ItemsNumber,int ButtonsNumber) { string strHT(HelpTopic); @@ -1317,7 +1317,7 @@ p[i] = AnsiToUnicode(Items[i]); } - DWORD NewFlags=0; + FARMESSAGEFLAGS NewFlags = (Flags & (oldfar::FMSG_MB_OK * 0xF)) << (FMSG_MB_OK/oldfar::FMSG_MB_OK-1) >> (oldfar::FMSG_MB_OK/FMSG_MB_OK-1); if (Flags&oldfar::FMSG_WARNING) NewFlags|=FMSG_WARNING; if (Flags&oldfar::FMSG_ERRORTYPE) @@ -1328,18 +1328,6 @@ NewFlags|=FMSG_LEFTALIGN; if (Flags&oldfar::FMSG_ALLINONE) NewFlags|=FMSG_ALLINONE; - if (Flags&oldfar::FMSG_MB_OK) - NewFlags|=FMSG_MB_OK; - if (Flags&oldfar::FMSG_MB_OKCANCEL) - NewFlags|=FMSG_MB_OKCANCEL; - if (Flags&oldfar::FMSG_MB_ABORTRETRYIGNORE) - NewFlags|=FMSG_MB_ABORTRETRYIGNORE; - if (Flags&oldfar::FMSG_MB_YESNO) - NewFlags|=FMSG_MB_YESNO; - if (Flags&oldfar::FMSG_MB_YESNOCANCEL) - NewFlags|=FMSG_MB_YESNOCANCEL; - if (Flags&oldfar::FMSG_MB_RETRYCANCEL) - NewFlags|=FMSG_MB_RETRYCANCEL; int ret = NativeInfo.Message(GetPluginGuid(PluginNumber),&FarGuid,NewFlags,(HelpTopic?strHT.CPtr():nullptr),p,ItemsNumber,ButtonsNumber); Index: plclass.cpp =================================================================== --- plclass.cpp (revision 6885) +++ plclass.cpp (working copy) @@ -270,7 +270,7 @@ return Key > 0?(KeyToInputRecord(Key,RecKey)!=0?TRUE:FALSE):FALSE; } -#define GetPluginNumber(Id) (CtrlObject?CtrlObject->Plugins.PluginGuidToPluginNumber(*Id):-1) +#define GetPluginNumber(Id) (Id ? (CtrlObject?CtrlObject->Plugins.PluginGuidToPluginNumber(*Id):-1) : -1) static int WINAPI FarGetPluginDirListW(const GUID* PluginId,HANDLE hPlugin, const wchar_t *Dir,struct PluginPanelItem **pPanelItem, |
|
поправка: FARMESSAGEFLAGS NewFlags = ((Flags/oldfar::FMSG_MB_OK) & 0xF)*FMSG_MB_OK; |
|
Баг и в ftp - в PluginNumber нельзя передавать 0. |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-11-19 19:02 | 2useven10 | New Issue | |
2011-11-19 19:02 | 2useven10 | File Added: PlugLoadError.diff | |
2011-11-19 20:21 | 2useven10 | Note Added: 0007984 | |
2011-11-19 20:30 | 2useven10 | Note Edited: 0007984 | |
2011-11-19 21:37 | DrKnS | Note Added: 0007985 | |
2011-11-21 18:36 | 2useven10 | Assigned To | => DrKnS |
2011-11-21 18:36 | 2useven10 | Status | new => resolved |
2011-11-28 14:26 | DrKnS | Status | resolved => closed |
2011-11-28 14:26 | DrKnS | Resolution | open => fixed |
2011-11-28 14:26 | DrKnS | Fixed in Version | => 3.0 |
2013-05-20 20:30 | alexy | Category | FTP => FTP (old) |