소스 검색

* don't crash in getarraydef/getpointerdef if localsymtable is still nil

git-svn-id: trunk@22019 -
Jonas Maebe 13 년 전
부모
커밋
be2c757aad
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. 8 2
      compiler/symdef.pas

+ 8 - 2
compiler/symdef.pas

@@ -6817,7 +6817,10 @@ implementation
               that can have side-effects (e.g., it removes helpers) }
             symtablestack:=nil;
             res^.Data:=tpointerdef.create(def);
-            current_module.localsymtable.insertdef(tdef(res^.Data));
+            if assigned(current_module.localsymtable) then
+              current_module.localsymtable.insertdef(tdef(res^.Data))
+            else
+              current_module.globalsymtable.insertdef(tdef(res^.Data));
             symtablestack:=oldsymtablestack;
           end;
         result:=tpointerdef(res^.Data);
@@ -6852,7 +6855,10 @@ implementation
             symtablestack:=nil;
             res^.Data:=tarraydef.create(0,elecount-1,ptrsinttype);
             tarraydef(res^.Data).elementdef:=def;
-            current_module.localsymtable.insertdef(tdef(res^.Data));
+            if assigned(current_module.localsymtable) then
+              current_module.localsymtable.insertdef(tdef(res^.Data))
+            else
+              current_module.globalsymtable.insertdef(tdef(res^.Data));
             symtablestack:=oldsymtablestack;
           end;
         result:=tarraydef(res^.Data);