Browse Source

* prevent invalid typecast on targets using nestedfpstruct functionality
in case of type errors in the source (the compiler will already have
printed an error at this point)

git-svn-id: trunk@23044 -

Jonas Maebe 12 years ago
parent
commit
dfe3ca5328
1 changed files with 3 additions and 1 deletions
  1. 3 1
      compiler/pparautl.pas

+ 3 - 1
compiler/pparautl.pas

@@ -114,7 +114,9 @@ implementation
               paranr:=paranr_parentfp_delphi_cc;
               paranr:=paranr_parentfp_delphi_cc;
             { Generate frame pointer. It can't be put in a register since it
             { Generate frame pointer. It can't be put in a register since it
               must be accessable from nested routines }
               must be accessable from nested routines }
-            if not(target_info.system in systems_fpnestedstruct) then
+            if not(target_info.system in systems_fpnestedstruct) or
+               { in case of errors, prevent invalid type cast }
+               (pd.owner.defowner.typ<>procdef) then
               begin
               begin
                 vs:=tparavarsym.create('$parentfp',paranr,vs_value
                 vs:=tparavarsym.create('$parentfp',paranr,vs_value
                       ,voidpointertype,[vo_is_parentfp,vo_is_hidden_para]);
                       ,voidpointertype,[vo_is_parentfp,vo_is_hidden_para]);