소스 검색

* 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 2 년 전
부모
커밋
d410deb7ae
1개의 변경된 파일5개의 추가작업 그리고 0개의 파일을 삭제
  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 }