浏览代码

* Fixed internal linker entering infinite loop if script contains empty lines or comments.

git-svn-id: trunk@21650 -
sergei 13 年之前
父节点
当前提交
a2f0e54dc6
共有 1 个文件被更改,包括 18 次插入9 次删除
  1. 18 9
      compiler/link.pas

+ 18 - 9
compiler/link.pas

@@ -531,15 +531,11 @@ Implementation
       end;
 
 
-    procedure AddImportSymbol(const libname,symname,symmangledname:TCmdStr;OrdNr: longint;isvar:boolean);
-      begin
-      end;
-
-
     procedure TLinker.InitSysInitUnitName;
       begin
       end;
 
+
     function TLinker.MakeExecutable:boolean;
       begin
         MakeExecutable:=false;
@@ -951,7 +947,10 @@ Implementation
             inc(i);
             s:=hp.str;
             if (s='') or (s[1]='#') then
-              continue;
+              begin
+                hp:=TCmdStrListItem(hp.next);
+                continue;
+              end;
             keyword:=Upper(GetToken(s,' '));
             para:=GetToken(s,' ');
             if Trim(s)<>'' then
@@ -1037,6 +1036,7 @@ Implementation
             if (s='') or (s[1]='#') then
               begin
                 IsHandled^[i]:=true;
+                hp:=TCmdStrListItem(hp.next);
                 continue;
               end;
             handled:=true;
@@ -1084,7 +1084,10 @@ Implementation
             inc(i);
             s:=hp.str;
             if (s='') or (s[1]='#') then
-              continue;
+              begin
+                hp:=TCmdStrListItem(hp.next);
+                continue;
+              end;
             handled:=true;
             keyword:=Upper(GetToken(s,' '));
             para:=ParsePara(GetToken(s,' '));
@@ -1136,7 +1139,10 @@ Implementation
             inc(i);
             s:=hp.str;
             if (s='') or (s[1]='#') then
-              continue;
+              begin
+                hp:=TCmdStrListItem(hp.next);
+                continue;
+              end;
             handled:=true;
             keyword:=Upper(GetToken(s,' '));
             para:=ParsePara(GetToken(s,' '));
@@ -1172,7 +1178,10 @@ Implementation
             inc(i);
             s:=hp.str;
             if (s='') or (s[1]='#') then
-              continue;
+              begin
+                hp:=TCmdStrListItem(hp.next);
+                continue;
+              end;
             handled:=true;
             keyword:=Upper(GetToken(s,' '));
             para:=ParsePara(GetToken(s,' '));