File: tarray8.pp

package info (click to toggle)
fpc 3.2.2%2Bdfsg-20
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bookworm-backports
  • size: 341,276 kB
  • sloc: pascal: 3,820,179; xml: 194,356; ansic: 9,637; asm: 8,482; java: 5,346; sh: 4,813; yacc: 3,956; makefile: 2,686; lex: 2,661; javascript: 2,454; sql: 929; php: 474; cpp: 145; perl: 134; sed: 132; csh: 34; tcl: 7
file content (27 lines) | stat: -rw-r--r-- 696 bytes parent folder | download | duplicates (12)
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.