View Issue Details

IDProjectCategoryView StatusLast Update
0001864Far ManagerMacropublic2011-12-23 11:02
ReporterMaximus Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0001864: Падение отладочной версии при выполнении записанного макроса
Descriptionпри вызове Callback - фар валится
TagsNo tags attached.
Build2181

Activities

Maximus

2011-08-25 16:01

reporter  

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;
 				}
 			}
 
Macro.diff (1,847 bytes)   

Maximus

2011-08-25 22:49

reporter   bugnote:0007536

Если уж хочется "Guid=FarGuid", то и в KeyMacro::ReadMacros он не помешает.

vskirdin

2011-08-28 12:28

administrator   bugnote:0007560

build 2174 оно?

Maximus

2011-08-28 13:14

reporter   bugnote:0007563

Нет.
В смысле, заявленную проблему 2174 решает.

но:
> Если уж хочется "Guid=FarGuid", то и в KeyMacro::ReadMacros он не помешает.
т.е., как я вижу, ReadMacros _явно_ CurMacro.Guid не заполняет.
Он, конечно, только из нулей состоит, но некрасиво?

vskirdin

2011-08-29 10:34

administrator   bugnote:0007564

Хмм... "CurMacro.Guid=FarGuid;" говоришь. Хмм...
Правильно я понимаю, что все то, что ФАР считал из... реестра/файла/базы/etc., всему присваивать FarGuid?

Может здесь вот как:
1. если поля Guid нету, тогда уж и FarGuid.
2. если есть - то... то что есть.
Тогда получается:
1. ввели макрос с клавиатуры - FarGuid
2. сделали Add без гуида - FarGuid
3. сделали Add с {0..0} - FarGuid
4. остальное как есть.

vskirdin

2011-08-29 12:48

administrator   bugnote:0007566

build 2181

Issue History

Date Modified Username Field Change
2011-08-25 16:01 Maximus New Issue
2011-08-25 16:01 Maximus File Added: Macro.diff
2011-08-25 22:49 Maximus Note Added: 0007536
2011-08-28 12:28 vskirdin Note Added: 0007560
2011-08-28 13:14 Maximus Note Added: 0007563
2011-08-29 10:34 vskirdin Note Added: 0007564
2011-08-29 12:48 vskirdin Note Added: 0007566
2011-08-29 12:48 vskirdin Assigned To => vskirdin
2011-08-29 12: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