From acc8c69cf582a3643341085226e8a57842191123 Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 9 Jun 2022 16:21:24 +0200 Subject: [PATCH] fpdoc: free TPasElement instead of reference count --- utils/fpdoc/dglobals.pp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/utils/fpdoc/dglobals.pp b/utils/fpdoc/dglobals.pp index bd714b5adb..96fbda3bf6 100644 --- a/utils/fpdoc/dglobals.pp +++ b/utils/fpdoc/dglobals.pp @@ -474,12 +474,7 @@ begin end; destructor TFPDocEngine.Destroy; -var - i: Integer; begin - if FPackages.Count > 0 then - for i := 0 to FPackages.Count - 1 do - TPasPackage(FPackages[i]).Release{$IFDEF CheckPasTreeRefCount}('TFPDocEngine.Destroy'){$ENDIF}; FreeAndNil(FPackages); FreeAndNil(FRootDocNode); FreeAndNil(FRootLinkNode); @@ -567,14 +562,14 @@ var end; end; - function ResolvePackageModule(AName:String;out pkg:TPasPackage;out module:TPasModule;createnew:boolean):String; + function ResolvePackageModule(AName: String; out pkg: TPasPackage; out Module: TPasModule; CreateNew: boolean): String; var DotPos, DotPos2, i: Integer; s: String; HPackage: TPasPackage; begin - pkg:=nil; module:=nil; result:=''; + pkg:=nil; Module:=nil; result:=''; // Find or create package DotPos := Pos('.', AName); @@ -595,7 +590,7 @@ var FPackages.Add(HPackage); end; - // Find or create module + // Find or create Module DotPos2 := DotPos; repeat Inc(DotPos2); @@ -613,8 +608,10 @@ var if not CreateNew then exit; Module := TPasExternalModule.Create(s, HPackage); + FOwnedElements.Add(Module); HPackage.Modules.Add(Module); Module.InterfaceSection := TInterfaceSection.Create('', Module); + FOwnedElements.Add(Module.InterfaceSection); Module.PackageName:= HPackage.Name; end; pkg:=hpackage; @@ -674,6 +671,7 @@ var s:= ResolvePackageModule(AName,HPackage,Module,True); // Create node for class Result := TPasExternalClassType.Create(s, Module.InterfaceSection); + FOwnedElements.Add(Result); Result.ObjKind := okClass; Module.InterfaceSection.Declarations.Add(Result); Module.InterfaceSection.Classes.Add(Result); @@ -703,7 +701,6 @@ var result:=TPasClassType(ResolveClassType(clname)); if assigned(result) and not (cls=result) then // save from tobject=implicit tobject begin - result.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.ResolveAndLinkClass'){$ENDIF}; if IsClass then begin cls.ancestortype:=result; @@ -745,7 +742,6 @@ var Result := TPasAliasType(CreateElement(TPasAliasType,s,module.interfacesection,vispublic,'',0)); module.interfacesection.Declarations.Add(Result); TPasAliasType(Result).DestType := cl2; - cl2.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.CreateAliasType'){$ENDIF}; end end end; @@ -838,6 +834,7 @@ var else raise Exception.Create('Invalid member type: ' + s[2]); end; + FOwnedElements.Add(Member); CurClass.Members.Add(Member); end; end; @@ -1016,6 +1013,7 @@ function TFPDocEngine.CreateElement(AClass: TPTreeElement; const AName: String; const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement; begin Result := AClass.Create(AName, AParent); + FOwnedElements.Add(Result); Result.Visibility := AVisibility; if AClass.InheritsFrom(TPasModule) then CurModule := TPasModule(Result);