diff options
author | fpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-05-16 18:37:41 +0000 |
---|---|---|
committer | fpc <fpc@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-05-16 18:37:41 +0000 |
commit | f206a9c2b1ae1d8727ca27a96d448b61fdb4c766 (patch) | |
tree | f28256ff9964c1fc7c0f7fb00891268a117b745d /tests/tbs/tb0252.pp | |
download | fpc-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.pp | 50 |
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. |