diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-01-19 19:08:26 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-01-19 19:08:26 +0000 |
commit | 1c3fec0de9c9a2dd9f2f86db40ac6c34a48c0c8c (patch) | |
tree | 2405ba5c4c4e1e47b2226ec0448fb63d91ff0892 /packages/fcl-passrc/src/pasresolver.pp | |
parent | 27444d99caeac14a63599df4c79652db0550a97f (diff) | |
download | fpc-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.pp | 14 |
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; |