summaryrefslogtreecommitdiff
path: root/tests/tbs/tb0252.pp
diff options
context:
space:
mode:
authorfpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-05-16 18:37:41 +0000
committerfpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-05-16 18:37:41 +0000
commitf206a9c2b1ae1d8727ca27a96d448b61fdb4c766 (patch)
treef28256ff9964c1fc7c0f7fb00891268a117b745d /tests/tbs/tb0252.pp
downloadfpc-f206a9c2b1ae1d8727ca27a96d448b61fdb4c766.tar.gz
initial import
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@1 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'tests/tbs/tb0252.pp')
-rw-r--r--tests/tbs/tb0252.pp50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/tbs/tb0252.pp b/tests/tbs/tb0252.pp
new file mode 100644
index 0000000000..ee8d76f542
--- /dev/null
+++ b/tests/tbs/tb0252.pp
@@ -0,0 +1,50 @@
+{ Old file: tbs0292.pp }
+{ objects not finalized when disposed OK 0.99.13 (FK) }
+
+{$mode objfpc}
+
+type
+ pobj = ^tobj;
+ tobj = object
+ a: ansistring;
+ constructor init(s: ansistring);
+ destructor done;
+ end;
+
+ PAnsiRec = ^TAnsiRec;
+ TAnsiRec = Packed Record
+ Maxlen,
+ len,
+ ref : Longint;
+ First : Char;
+ end;
+
+const firstoff = sizeof(tansirec)-1;
+
+var o: pobj;
+ t: ansistring;
+
+constructor tobj.init(s: ansistring);
+begin
+ a := s;
+end;
+
+destructor tobj.done;
+begin
+end;
+
+const
+ s : string = ' with suffix';
+var
+ refbefore : longint;
+begin
+ t:='test'+s;
+ refbefore:=pansirec(pointer(t)-firstoff)^.ref;
+ writeln('refcount before init: ',pansirec(pointer(t)-firstoff)^.ref);
+ new(o,init(t));
+ writeln('refcount after init: ',pansirec(pointer(t)-firstoff)^.ref);
+ dispose(o,done);
+ writeln('refcount after done: ',pansirec(pointer(t)-firstoff)^.ref);
+ if refbefore<>pansirec(pointer(t)-firstoff)^.ref then
+ Halt(1);
+end.