From 246e3897033d4c77704dddfd2a23abac2faec8cb Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 3 Jun 1998 12:01:56 +0000 Subject: [PATCH] + Added bug0141.pp --- bugs/bug0141.pp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ bugs/readme.txt | 3 ++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 bugs/bug0141.pp diff --git a/bugs/bug0141.pp b/bugs/bug0141.pp new file mode 100644 index 0000000000..393120b109 --- /dev/null +++ b/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$$$$ +} \ No newline at end of file diff --git a/bugs/readme.txt b/bugs/readme.txt index 9454dd1ae6..e8930eea62 100644 --- a/bugs/readme.txt +++ b/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. \ No newline at end of file +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. \ No newline at end of file