summaryrefslogtreecommitdiff
path: root/tests/test/tarray8.pp
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-04-10 19:20:48 +0000
commit160cc1e115eeb75638dce6effdd16b2bc810ddb4 (patch)
treeb791a95695a7cf674e61a6153139c6f9c6c491fa /tests/test/tarray8.pp
parent3843727e74b31bbf2a34e7e3b89ee422269f770e (diff)
parent413a6aa6469e6c297780217a27ca91363c637944 (diff)
downloadfpc-avr.tar.gz
* rebase to trunk@17295avr
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/avr@17296 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'tests/test/tarray8.pp')
-rw-r--r--tests/test/tarray8.pp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/test/tarray8.pp b/tests/test/tarray8.pp
new file mode 100644
index 0000000000..3ce505c0f1
--- /dev/null
+++ b/tests/test/tarray8.pp
@@ -0,0 +1,27 @@
+{ Test correct RTTI handling of open arrays with managed elements.
+ See also webtbs/tw18859.pp }
+
+{$mode objfpc}{$h+}
+
+procedure test3(out arr: array of string);
+begin
+ { implicit initialize happens here }
+ arr[0] := ''; // if initialization does not happen correctly, teststring will be destroyed
+end;
+
+var
+ teststring: string;
+ arrs: array[0..3] of string;
+
+begin
+ teststring := 'test';
+ uniquestring(teststring);
+ // Must be a string with refcount>1, otherwise decref before call will release it and
+ // zero the pointer, thus masking the issue.
+ arrs[0] := teststring;
+ { implicit decref happens here }
+ test3(arrs);
+ if teststring <> 'test' then
+ Halt(1);
+ Halt(0);
+end.