mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 04:39:28 +02:00
52 lines
914 B
ObjectPascal
52 lines
914 B
ObjectPascal
program tarrconstr7;
|
|
|
|
{$mode objfpc}
|
|
|
|
type
|
|
TTest = class(TInterfacedObject, IInterface)
|
|
function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
end;
|
|
|
|
var
|
|
gRefCount: LongInt = 0;
|
|
|
|
function TTest._AddRef: LongInt; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
begin
|
|
Result := inherited _AddRef;
|
|
gRefCount := Result;
|
|
end;
|
|
|
|
function TTest._Release: LongInt; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
|
|
begin
|
|
Result := inherited _Release;
|
|
gRefCount := Result;
|
|
end;
|
|
|
|
procedure TestArrConstr(const aIntf: IInterface);
|
|
var
|
|
a: array of IInterface;
|
|
begin
|
|
a := [aIntf];
|
|
a := Nil;
|
|
end;
|
|
|
|
procedure Test;
|
|
var
|
|
t: IInterface;
|
|
c: LongInt;
|
|
begin
|
|
t := TTest.Create;
|
|
|
|
c := gRefCount;
|
|
TestArrConstr(t);
|
|
if gRefCount <> c then
|
|
Halt(1);
|
|
end;
|
|
|
|
begin
|
|
Test;
|
|
if gRefCount <> 0 then
|
|
Halt(2);
|
|
end.
|