Browse Source

+ Added bug0141.pp

michael 27 years ago
parent
commit
246e389703
2 changed files with 64 additions and 1 deletions
  1. 62 0
      bugs/bug0141.pp
  2. 2 1
      bugs/readme.txt

+ 62 - 0
bugs/bug0141.pp

@@ -0,0 +1,62 @@
+program bug;
+
+uses objpas;
+type
+   //
+   TObjectAB = class;
+   TObjectABCD = class;
+   TObjectABCDEF = class;
+   // }
+   TObjectAB = class(tobject)
+      a, b: integer;
+   end ;
+   TObjectABCD = class(TObjectAB)
+      c, d: integer;
+   end ;
+   TObjectABCDEF = class(TObjectABCD)
+      e, f: integer;
+   end ;
+
+var
+   a, b, c: TObject;
+
+begin
+a := TObjectAB.Create;
+WriteLn(a.InstanceSize, '  Should be: 12');
+b := TObjectABCD.Create;
+WriteLn(b.InstanceSize, '  Should be: 20');
+c := TObjectABCDEF.Create;
+WriteLn(c.InstanceSize, '  Should be: 28');
+end.
+
+{
+Here are the VMT tables from the assembler file:
+
+.globl VMT_TD$_TOBJECTAB
+VMT_TD$_TOBJECTAB:
+ .long 12,-12
+ .long VMT_OBJPAS$_TOBJECT
+ .long _OBJPAS$$_$$_TOBJECT_DESTROY
+ .long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
+ .long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
+.globl VMT_TD$_TOBJECTABCD
+VMT_TD$_TOBJECTABCD:
+ .long 12,-12
+ .long VMT_TD$_TOBJECTAB
+ .long _OBJPAS$$_$$_TOBJECT_DESTROY
+ .long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
+ .long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
+.globl VMT_TD$_TOBJECTABCDEF
+VMT_TD$_TOBJECTABCDEF:
+ .long 12,-12
+ .long VMT_TD$_TOBJECTABCD
+ .long _OBJPAS$$_$$_TOBJECT_DESTROY
+ .long _OBJPAS$$_$$_TOBJECT_NEWINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_FREEINSTANCE
+ .long _OBJPAS$$_$$_TOBJECT_SAFECALLEXCEPTION$TOBJECT$POINTER
+ .long _OBJPAS$$_$$_TOBJECT_DEFAULTHANDLER$$$$
+}

+ 2 - 1
bugs/readme.txt

@@ -189,4 +189,5 @@ bug0135.pp   Unsupported subrange type construction.
 bug0137.pp   Cannot assign child object variable to parent objcet type variable
 bug0138.pp   with problem, %esi can be crushed and is not restored
 bug0139.pp   Cannot access protected method of ancestor class from other unit.
-bug0140.pp   Shows that interdependent units still are not OK. You need to compile a second time to see the error.
+bug0140.pp   Shows that interdependent units still are not OK. You need to compile a second time to see the error.
+bug0141.pp   Wrong Class sizes when using forwardly defined classes.