|
@@ -0,0 +1,70 @@
|
|
|
+{ Source provided for Free Pascal Bug Report 3971 }
|
|
|
+{ Submitted by "Thomas Schatzl" on 2005-05-16 }
|
|
|
+{ e-mail: }
|
|
|
+type
|
|
|
+ TDemo1 = object
|
|
|
+ member1 : byte;
|
|
|
+ member2 : longint;
|
|
|
+
|
|
|
+ member7 : ^longint;
|
|
|
+ member3 : int64;
|
|
|
+
|
|
|
+ member4 : byte;
|
|
|
+ member5 : longint;
|
|
|
+ //x : boolean;
|
|
|
+ //
|
|
|
+ member6 : int64;
|
|
|
+ x : boolean;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TDemo = object
|
|
|
+ constructor init;
|
|
|
+ destructor Destroy;
|
|
|
+ procedure doSomething;
|
|
|
+ procedure doSomething2;
|
|
|
+
|
|
|
+ member1 : byte;
|
|
|
+ member5 : longint;
|
|
|
+ member6 : int64;
|
|
|
+ y : array[0..2] of TDemo1;
|
|
|
+ end;
|
|
|
+var
|
|
|
+ x : array[0..2] of TDemo;
|
|
|
+
|
|
|
+ z : TDemo;
|
|
|
+ w : TDemo1;
|
|
|
+
|
|
|
+constructor TDemo.init();
|
|
|
+begin
|
|
|
+ WriteLn('Create start');
|
|
|
+ inherited;
|
|
|
+ WriteLn('Create end');
|
|
|
+end;
|
|
|
+
|
|
|
+destructor TDemo.Destroy();
|
|
|
+begin
|
|
|
+ WriteLn('Destroy start');
|
|
|
+ inherited;
|
|
|
+ WriteLn('Destroy end');
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TDemo.doSomething;
|
|
|
+begin
|
|
|
+ WriteLn('doSomething');
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TDemo.doSomething2;
|
|
|
+begin
|
|
|
+ WriteLn('doSomething');
|
|
|
+end;
|
|
|
+
|
|
|
+
|
|
|
+begin
|
|
|
+ z.init;
|
|
|
+ if ((ptrint(@z.y)-ptrint(@z)) mod sizeof(ptrint))<>0 then
|
|
|
+ halt(1);
|
|
|
+ if ((ptrint(@z.y[0].member7)-ptrint(@z)) mod sizeof(ptrint))<>0 then
|
|
|
+ halt(1);
|
|
|
+ z.destroy;
|
|
|
+ WriteLn(sizeof(TDemo), ' ', sizeof(TDemo1));
|
|
|
+end.
|