浏览代码

* prevent overflow in record size

git-svn-id: trunk@8428 -
peter 18 年之前
父节点
当前提交
fcfe1b24b4
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      compiler/dbgstabs.pas

+ 5 - 2
compiler/dbgstabs.pas

@@ -159,7 +159,7 @@ implementation
         varvaluedata:array[0..maxdata+256] of char;
         varptr:Pchar;
         varidx : byte;
-        len:cardinal;
+        len:longint;
         r:Pchar;
 
     begin
@@ -374,7 +374,10 @@ implementation
             inc(state^.stabsize,strlen(newrec));
             freemem(newrec);
             {This should be used for case !!}
-            inc(state^.recoffset,Tfieldvarsym(p).vardef.size);
+            if int64(state^.recoffset)+Tfieldvarsym(p).vardef.size>high(longint) then
+              state^.recoffset:=high(longint)
+            else
+              inc(state^.recoffset,Tfieldvarsym(p).vardef.size);
           end;
       end;