diff options
Diffstat (limited to 'tests/test/tarray8.pp')
| -rw-r--r-- | tests/test/tarray8.pp | 27 |
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. |
