瀏覽代碼

* fix for 16644, locally disable rangecheck and put a debug writeln under chm_debug

git-svn-id: trunk@15396 -
marco 15 年之前
父節點
當前提交
0a164b4467
共有 1 個文件被更改,包括 11 次插入1 次删除
  1. 11 1
      packages/chm/src/chmbase.pas

+ 11 - 1
packages/chm/src/chmbase.pas

@@ -173,12 +173,16 @@ var
 begin
   bit := 28; //((sizeof(dWord)*8)div 7)*7; // = 28
   buf := @Value;
+  {$undef rangeon}
+  {$ifopt R+}
+     {$define rangeon}
+  {$endif}
+  {$R-}
   while True do begin
     mask := $7f shl bit;
     if (bit = 0) or ((ANumber and mask)<>0) then break;
     Dec(bit, 7);
   end;
-
   while True do begin
     buf^ := Byte(((ANumber shr bit)and $7f));
     if(bit = 0) then break;
@@ -187,11 +191,17 @@ begin
     Dec(bit, 7);
     Inc(TheEnd);
   end;
+
+  {$ifdef rangeon}
+    {$R+}
+  {$endif}
   
   buf := @Value;
   Result := TheEnd+1;
   Move(Value, Buffer^, Result);
+  {$ifdef chm_debug}
   if Result > 8 then WriteLn(' ', ANumber,' WRITE_COMPRESSED_INTEGER too big!: ', Result, ' ');
+  {$endif}
 end;
 
 function ChmCompareText(S1, S2: String): Integer; inline;