diff --git a/compiler/packages/fcl-passrc/src/pasresolver.pp b/compiler/packages/fcl-passrc/src/pasresolver.pp index b79528c..0b688ce 100644 --- a/compiler/packages/fcl-passrc/src/pasresolver.pp +++ b/compiler/packages/fcl-passrc/src/pasresolver.pp @@ -21056,6 +21056,7 @@ end; function TPasResolver.FindElementWithoutParams(const AName: String; ErrorPosEl: TPasElement; NoProcsWithArgs, NoGenerics: boolean): TPasElement; +// ErrorPosEl=nil means to use scanner position as error position var Data: TPRFindData; begin @@ -21070,6 +21071,7 @@ end; function TPasResolver.FindElementWithoutParams(const AName: String; out Data: TPRFindData; ErrorPosEl: TPasElement; NoProcsWithArgs, NoGenerics: boolean): TPasElement; +// ErrorPosEl=nil means to use scanner position as error position var Abort: boolean; begin diff --git a/compiler/packages/fcl-passrc/src/pastree.pp b/compiler/packages/fcl-passrc/src/pastree.pp index 4ec9758..5ced73a 100644 --- a/compiler/packages/fcl-passrc/src/pastree.pp +++ b/compiler/packages/fcl-passrc/src/pastree.pp @@ -2152,7 +2152,7 @@ destructor TInlineSpecializeExpr.Destroy; var i: Integer; begin - TPasElement(NameExpr).Release{$IFDEF CheckPasTreeRefCount}('CreateElement'){$ENDIF}; + ReleaseAndNil(TPasElement(NameExpr){$IFDEF CheckPasTreeRefCount},'CreateElement'{$ENDIF}); for i:=0 to Params.Count-1 do TPasElement(Params[i]).Release{$IFDEF CheckPasTreeRefCount}('TInlineSpecializeExpr.Params'){$ENDIF}; FreeAndNil(Params); diff --git a/compiler/packages/fcl-passrc/src/pparser.pp b/compiler/packages/fcl-passrc/src/pparser.pp index 47a3f27..488cec1 100644 --- a/compiler/packages/fcl-passrc/src/pparser.pp +++ b/compiler/packages/fcl-passrc/src/pparser.pp @@ -1998,7 +1998,10 @@ begin finally if not ok then if Result<>nil then + begin Result.Release{$IFDEF CheckPasTreeRefCount}('CreateElement'){$ENDIF}; + Result:=nil; + end; end; end;