summaryrefslogtreecommitdiff
path: root/packages/fcl-passrc/src/pasresolver.pp
diff options
context:
space:
mode:
authormattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-19 19:08:26 +0000
committermattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-19 19:08:26 +0000
commit1c3fec0de9c9a2dd9f2f86db40ac6c34a48c0c8c (patch)
tree2405ba5c4c4e1e47b2226ec0448fb63d91ff0892 /packages/fcl-passrc/src/pasresolver.pp
parent27444d99caeac14a63599df4c79652db0550a97f (diff)
downloadfpc-1c3fec0de9c9a2dd9f2f86db40ac6c34a48c0c8c.tar.gz
fcl-passrc: fixed checking statement after except-on
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@48211 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-passrc/src/pasresolver.pp')
-rw-r--r--packages/fcl-passrc/src/pasresolver.pp14
1 files changed, 11 insertions, 3 deletions
diff --git a/packages/fcl-passrc/src/pasresolver.pp b/packages/fcl-passrc/src/pasresolver.pp
index f5ccbd26e5..8d7be7670b 100644
--- a/packages/fcl-passrc/src/pasresolver.pp
+++ b/packages/fcl-passrc/src/pasresolver.pp
@@ -3937,10 +3937,16 @@ end;
{ EPasResolve }
procedure EPasResolve.SetPasElement(AValue: TPasElement);
+var
+ Old: TPasElement;
begin
if FPasElement=AValue then Exit;
- if PasElement<>nil then
+ Old:=FPasElement;
+ if Old<>nil then
+ begin
+ Old:=nil;
PasElement.Release{$IFDEF CheckPasTreeRefCount}('EPasResolve.SetPasElement'){$ENDIF};
+ end;
FPasElement:=AValue;
if PasElement<>nil then
PasElement.AddRef{$IFDEF CheckPasTreeRefCount}('EPasResolve.SetPasElement'){$ENDIF};
@@ -7526,11 +7532,13 @@ procedure TPasResolver.FinishExceptOnExpr;
var
El: TPasImplExceptOn;
ResolvedType: TPasResolverResult;
+ TypeEl: TPasType;
begin
CheckTopScope(TPasExceptOnScope);
El:=TPasImplExceptOn(FTopScope.Element);
- ComputeElement(El.TypeEl,ResolvedType,[rcType]);
- CheckIsClass(El.TypeEl,ResolvedType);
+ TypeEl:=El.TypeEl;
+ ComputeElement(TypeEl,ResolvedType,[rcType]);
+ CheckIsClass(TypeEl,ResolvedType);
end;
procedure TPasResolver.FinishExceptOnStatement;