diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas index b6af8270fc..504c11ba12 100644 --- a/ide/buildmanager.pas +++ b/ide/buildmanager.pas @@ -365,7 +365,7 @@ begin {$ENDIF} s:=''; //IDEMessageDialog('Unknown Macro','Macro not defined: "'+s+'".',mtError,[mbAbort],0); - Handled:=true; + Handled:=false; exit; end; end; diff --git a/ide/packages/ideconfig/transfermacros.pp b/ide/packages/ideconfig/transfermacros.pp index e9f231d337..2d15565af1 100644 --- a/ide/packages/ideconfig/transfermacros.pp +++ b/ide/packages/ideconfig/transfermacros.pp @@ -295,7 +295,10 @@ begin //debugln(['TTransferMacroList.SubstituteStr FUNC ',MacroName]); MacroEnd:=SearchBracketClose(MacroEnd)+1; if MacroEnd>sLen+1 then + begin + result := false; break; // missing closing bracket + end; OldMacroLen:=MacroEnd-MacroStart; MacroStr:=copy(s,MacroStart,OldMacroLen); // Macro found @@ -322,6 +325,8 @@ begin ExecuteMacro(MacroName,MacroParam,Data,Handled,Abort,Depth+1); if Abort then exit(false); + if not Handled then + result := false; // set error, but continue parsing MacroStr:=MacroParam; // substitute result