File: tarray8.pp

package info (click to toggle)
fpc 3.2.0%2Bdfsg-12
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, bullseye-backports
  • size: 338,552 kB
  • sloc: pascal: 3,794,737; xml: 191,997; ansic: 9,637; asm: 8,482; java: 5,346; sh: 4,664; yacc: 3,751; makefile: 2,688; lex: 2,538; javascript: 2,375; sql: 929; php: 473; cpp: 145; perl: 134; sed: 132; csh: 34; tcl: 7
file content (27 lines) | stat: -rw-r--r-- 696 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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.