Explorar o código

fpdoc: free TPasElement instead of reference count

mattias %!s(int64=3) %!d(string=hai) anos
pai
achega
acc8c69cf5
Modificáronse 1 ficheiros con 8 adicións e 10 borrados
  1. 8 10
      utils/fpdoc/dglobals.pp

+ 8 - 10
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);