Index: macro.cpp
===================================================================
--- macro.cpp	(revision 5937)
+++ macro.cpp	(working copy)
@@ -77,6 +77,7 @@
 #include "dirmix.hpp"
 #include "console.hpp"
 #include "imports.hpp"
+#include "FileMasksProcessor.hpp"
 #include "CFileMask.hpp"
 
 // для диалога назначения клавиши
@@ -296,7 +297,6 @@
 static bool beepFunc(const TMacroFunction*);
 static bool callpluginFunc(const TMacroFunction*);
 static bool chrFunc(const TMacroFunction*);
-static bool fmatchFunc(const TMacroFunction*);
 static bool clipFunc(const TMacroFunction*);
 static bool dateFunc(const TMacroFunction*);
 static bool dlggetvalueFunc(const TMacroFunction*);
@@ -310,6 +310,7 @@
 static bool fexistFunc(const TMacroFunction*);
 static bool floatFunc(const TMacroFunction*);
 static bool flockFunc(const TMacroFunction*);
+static bool fmatchFunc(const TMacroFunction*);
 static bool fsplitFunc(const TMacroFunction*);
 static bool iifFunc(const TMacroFunction*);
 static bool indexFunc(const TMacroFunction*);
@@ -3750,20 +3751,18 @@
 	return true;
 }
 
-// N=FMatch(S, Mask)
+// N=FMatch(S,Mask)
 static bool fmatchFunc(const TMacroFunction*)
 {
-	TVar Mask;  VMStack.Pop(Mask);
+	TVar Mask; VMStack.Pop(Mask);
 	TVar S;    VMStack.Pop(S);
 	CFileMask FileMask;
 
-	bool Ret = FileMask.Set(Mask.toString(), 0);
-	if (Ret && FileMask.Set(Mask.toString(), FMF_SILENT))
-	  Ret = FileMask.Compare(S.toString());
-
-	VMStack.Push(Ret?1:0);
-
-	return Ret?true:false;
+	if (FileMask.Set(Mask.toString(), FMF_SILENT))
+		VMStack.Push(FileMask.Compare(S.toString()));
+	else
+		VMStack.Push(-1);
+	return true;
 }
 
 // V=Editor.Sel(Action[,Opt])
