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) |