Browse Source

compiler: set to nil after free

mattias 5 days ago
parent
commit
b66b156963
1 changed files with 8 additions and 0 deletions
  1. 8 0
      compiler/optvirt.pas

+ 8 - 0
compiler/optvirt.pas

@@ -192,7 +192,9 @@ unit optvirt;
       begin
         { fchilds owns its members, so it will free them too }
         fchilds.free;
+        fchilds:=nil;
         fcalledvmtmethods.free;
+        fcalledvmtmethods:=nil;
         inherited destroy;
       end;
 
@@ -270,7 +272,9 @@ unit optvirt;
     destructor tinheritancetree.destroy;
       begin
         froots.free;
+        froots:=nil;
         classrefdefs.free;
+        classrefdefs:=nil;
         inherited destroy;
       end;
       
@@ -635,6 +639,7 @@ unit optvirt;
           if assigned(fstaticmethodnames[i]) then
             freemem(fstaticmethodnames[i]);
         fstaticmethodnames.free;
+        fstaticmethodnames:=nil;
         inherited destroy;
       end;
 
@@ -668,6 +673,7 @@ unit optvirt;
     destructor tunitdevirtinfo.destroy;
       begin
         fclasses.free;
+        fclasses:=nil;
         inherited destroy;
       end;
 
@@ -739,6 +745,7 @@ unit optvirt;
     destructor tprogdevirtinfo.destroy;
       begin
         funits.free;
+        funits:=nil;
         inherited destroy;
       end;
 
@@ -879,6 +886,7 @@ unit optvirt;
 {$endif DEBUG_DEVIRT}
          inheritancetree.foreachnode(@converttreenode,nil);
          inheritancetree.free;
+         inheritancetree:=nil;
       end;