Parcourir la source

* when assigning an anonymous function to a method pointer move the function to the normal function level to avoid potential problems when accessing other variables

Sven/Sarah Barth il y a 2 ans
Parent
commit
d410deb7ae
1 fichiers modifiés avec 5 ajouts et 0 suppressions
  1. 5 0
      compiler/ncnv.pas

+ 5 - 0
compiler/ncnv.pas

@@ -2501,6 +2501,11 @@ implementation
                         ) then
                       internalerror(2021060801);
 
+                    { we know this only captures Self, so we can move the
+                      anonymous function to normal function level }
+                    pd.parast.symtablelevel:=normal_function_level;
+                    tprocdef(pd).localst.symtablelevel:=normal_function_level;
+
                     selfsym:=nil;
                     fpsym:=nil;
                     { find the framepointer parameter and an eventual self }