Browse Source

* fixed dup rtti writing for classes

peter 25 years ago
parent
commit
bf32e168f9
1 changed files with 26 additions and 18 deletions
  1. 26 18
      compiler/symdef.inc

+ 26 - 18
compiler/symdef.inc

@@ -396,19 +396,21 @@
     { rtti generation }
     { rtti generation }
     procedure tdef.generate_rtti;
     procedure tdef.generate_rtti;
       begin
       begin
-         has_rtti:=true;
-         getdatalabel(rtti_label);
-         write_child_rtti_data;
-         rttilist^.concat(new(pai_symbol,init(rtti_label,0)));
-         write_rtti_data;
-         rttilist^.concat(new(pai_symbol_end,init(rtti_label)));
+         if not has_rtti then
+          begin
+            has_rtti:=true;
+            getdatalabel(rtti_label);
+            write_child_rtti_data;
+            rttilist^.concat(new(pai_symbol,init(rtti_label,0)));
+            write_rtti_data;
+            rttilist^.concat(new(pai_symbol_end,init(rtti_label)));
+          end;
       end;
       end;
 
 
 
 
     function tdef.get_rtti_label : string;
     function tdef.get_rtti_label : string;
       begin
       begin
-         if not(has_rtti) then
-           generate_rtti;
+         generate_rtti;
          get_rtti_label:=rtti_label^.name;
          get_rtti_label:=rtti_label^.name;
       end;
       end;
 
 
@@ -3718,13 +3720,16 @@ Const local_symtable_index : longint = $8001;
 
 
     procedure tobjectdef.generate_rtti;
     procedure tobjectdef.generate_rtti;
       begin
       begin
-         has_rtti:=true;
-         getdatalabel(rtti_label);
-         write_child_rtti_data;
-         rttilist^.concat(new(pai_symbol,initname_global(rtti_name,0)));
-         rttilist^.concat(new(pai_label,init(rtti_label)));
-         write_rtti_data;
-         rttilist^.concat(new(pai_symbol_end,initname(rtti_name)));
+         if not has_rtti then
+          begin
+            has_rtti:=true;
+            getdatalabel(rtti_label);
+            write_child_rtti_data;
+            rttilist^.concat(new(pai_symbol,initname_global(rtti_name,0)));
+            rttilist^.concat(new(pai_label,init(rtti_label)));
+            write_rtti_data;
+            rttilist^.concat(new(pai_symbol_end,initname(rtti_name)));
+          end;
       end;
       end;
 
 
 
 
@@ -3806,11 +3811,11 @@ Const local_symtable_index : longint = $8001;
     function  tobjectdef.get_rtti_label : string;
     function  tobjectdef.get_rtti_label : string;
 
 
       begin
       begin
-         if not(has_rtti) then
-           generate_rtti;
+         generate_rtti;
          get_rtti_label:=rtti_name;
          get_rtti_label:=rtti_name;
       end;
       end;
 
 
+
 {****************************************************************************
 {****************************************************************************
                                 TFORWARDDEF
                                 TFORWARDDEF
 ****************************************************************************}
 ****************************************************************************}
@@ -3863,7 +3868,10 @@ Const local_symtable_index : longint = $8001;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.190  2000-01-28 23:17:53  florian
+  Revision 1.191  2000-01-30 23:29:06  peter
+    * fixed dup rtti writing for classes
+
+  Revision 1.190  2000/01/28 23:17:53  florian
     * virtual XXXX; support for objects, only if -dWITHDMT is defined
     * virtual XXXX; support for objects, only if -dWITHDMT is defined
 
 
   Revision 1.189  2000/01/26 12:02:29  peter
   Revision 1.189  2000/01/26 12:02:29  peter