소스 검색

* don't crash on external generic subroutines, resolves #41330

florian 1 개월 전
부모
커밋
cae21c4410
2개의 변경된 파일7개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      compiler/pdecsub.pas
  2. 6 0
      tests/webtbf/tw41330.pp

+ 1 - 0
compiler/pdecsub.pas

@@ -2413,6 +2413,7 @@ begin
     and only for external classes/interfaces }
     and only for external classes/interfaces }
   is_java_external:=
   is_java_external:=
     (pd.typ=procdef) and
     (pd.typ=procdef) and
+    assigned(pd.owner) and
     is_java_class_or_interface(tdef(pd.owner.defowner)) and
     is_java_class_or_interface(tdef(pd.owner.defowner)) and
     (oo_is_external in tobjectdef(pd.owner.defowner).objectoptions);
     (oo_is_external in tobjectdef(pd.owner.defowner).objectoptions);
   with tprocdef(pd) do
   with tprocdef(pd) do

+ 6 - 0
tests/webtbf/tw41330.pp

@@ -0,0 +1,6 @@
+{ %fail }
+generic procedure proc<T>(arg: T); external 'lib';
+
+begin
+  specialize proc<Integer>(1);
+end.