View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001864 | Far Manager | Macro | public | 2011-08-25 15:01 | 2011-12-23 11:02 |
| Reporter | Maximus | Assigned To | vskirdin | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 3.0 | ||||
| Fixed in Version | 3.0 | ||||
| Summary | 0001864: Падение отладочной версии при выполнении записанного макроса | ||||
| Description | при вызове Callback - фар валится | ||||
| Tags | No tags attached. | ||||
| Build | 2181 | ||||
|
|
Macro.diff (1,847 bytes)
Index: macro.cpp
===================================================================
--- macro.cpp (revision 6621)
+++ macro.cpp (working copy)
@@ -836,28 +836,31 @@
if (Pos < MacroLIBCount)
{
- MacroLIB[Pos].Key=MacroKey;
+ MacroRecord Macro = {0};
+ Macro.Key=MacroKey;
if (RecBufferSize > 0 && !RecSrc)
RecBuffer[RecBufferSize++]=MCODE_OP_ENDKEYS;
if (RecBufferSize > 1)
- MacroLIB[Pos].Buffer=RecBuffer;
+ Macro.Buffer=RecBuffer;
else if (RecBuffer && RecBufferSize > 0)
- MacroLIB[Pos].Buffer=reinterpret_cast<DWORD*>((DWORD_PTR)(*RecBuffer));
+ Macro.Buffer=reinterpret_cast<DWORD*>((DWORD_PTR)(*RecBuffer));
else if (!RecBufferSize)
- MacroLIB[Pos].Buffer=nullptr;
+ Macro.Buffer=nullptr;
- MacroLIB[Pos].BufferSize=RecBufferSize;
- MacroLIB[Pos].Src=RecSrc?RecSrc:MkTextSequence(MacroLIB[Pos].Buffer,MacroLIB[Pos].BufferSize);
- MacroLIB[Pos].Description=nullptr;
+ Macro.BufferSize=RecBufferSize;
+ Macro.Src=RecSrc?RecSrc:MkTextSequence(Macro.Buffer,Macro.BufferSize);
+ Macro.Description=nullptr;
// ���� ������ ������ - ������������� StartMode,
// ���� ������ �� common ������ �� ������, � ������� ��� ����� ������.
- if (!MacroLIB[Pos].BufferSize||!MacroLIB[Pos].Src)
- StartMode=MacroLIB[Pos].Flags&MFLAGS_MODEMASK;
+ if (!Macro.BufferSize||!Macro.Src)
+ StartMode=Macro.Flags&MFLAGS_MODEMASK;
- MacroLIB[Pos].Flags=Flags|(StartMode&MFLAGS_MODEMASK)|MFLAGS_NEEDSAVEMACRO|(Recording==MACROMODE_RECORDING_COMMON?0:MFLAGS_NOSENDKEYSTOPLUGINS);
+ Macro.Flags=Flags|(StartMode&MFLAGS_MODEMASK)|MFLAGS_NEEDSAVEMACRO|(Recording==MACROMODE_RECORDING_COMMON?0:MFLAGS_NOSENDKEYSTOPLUGINS);
+
+ MacroLIB[Pos]=Macro;
}
}
|
|
|
Если уж хочется "Guid=FarGuid", то и в KeyMacro::ReadMacros он не помешает. |
|
|
build 2174 оно? |
|
|
Нет. В смысле, заявленную проблему 2174 решает. но: > Если уж хочется "Guid=FarGuid", то и в KeyMacro::ReadMacros он не помешает. т.е., как я вижу, ReadMacros _явно_ CurMacro.Guid не заполняет. Он, конечно, только из нулей состоит, но некрасиво? |
|
|
Хмм... "CurMacro.Guid=FarGuid;" говоришь. Хмм... Правильно я понимаю, что все то, что ФАР считал из... реестра/файла/базы/etc., всему присваивать FarGuid? Может здесь вот как: 1. если поля Guid нету, тогда уж и FarGuid. 2. если есть - то... то что есть. Тогда получается: 1. ввели макрос с клавиатуры - FarGuid 2. сделали Add без гуида - FarGuid 3. сделали Add с {0..0} - FarGuid 4. остальное как есть. |
|
|
build 2181 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2011-08-25 15:01 | Maximus | New Issue | |
| 2011-08-25 15:01 | Maximus | File Added: Macro.diff | |
| 2011-08-25 21:49 | Maximus | Note Added: 0007536 | |
| 2011-08-28 11:28 | vskirdin | Note Added: 0007560 | |
| 2011-08-28 12:14 | Maximus | Note Added: 0007563 | |
| 2011-08-29 09:34 | vskirdin | Note Added: 0007564 | |
| 2011-08-29 11:48 | vskirdin | Note Added: 0007566 | |
| 2011-08-29 11:48 | vskirdin | Assigned To | => vskirdin |
| 2011-08-29 11:48 | vskirdin | Status | new => feedback |
| 2011-12-23 11:02 | alexy | Build | => 2181 |
| 2011-12-23 11:02 | alexy | Status | feedback => closed |
| 2011-12-23 11:02 | alexy | Resolution | open => fixed |
| 2011-12-23 11:02 | alexy | Fixed in Version | => 3.0 |