Fixed bug #13540 where quickref of chm files was written incorrectly

git-svn-id: trunk@13475 -
This commit is contained in:
andrew 2009-07-30 01:41:53 +00:00
parent c11243c83d
commit af76a5368a

View File

@ -99,7 +99,7 @@ uses chmbase;
function TDirectoryChunk.CanHold(ASize: Integer): Boolean;
begin
Result := CurrentPos < $1000-1 - ASize - (SizeOf(Word) * (FQuickRefEntries+2));
Result := CurrentPos < $1000 - ASize - (SizeOf(Word) * (FQuickRefEntries+2));
end;
function TDirectoryChunk.FreeSpace: Integer;
@ -125,7 +125,7 @@ begin
// now put a quickref entry if needed
if ItemCount mod 5 = 0 then begin
Inc(FQuickRefEntries);
ReversePos := ($1000-1) - SizeOf(Word) - (SizeOf(Word)*FQuickRefEntries);
ReversePos := ($1000) - SizeOf(Word) - (SizeOf(Word)*FQuickRefEntries);
Value := NtoLE(Word(CurrentPos - Size));
Move(Value, Buffer[ReversePos], SizeOf(Word));
end;
@ -134,10 +134,11 @@ end;
procedure TDirectoryChunk.WriteChunkToStream(Stream: TStream);
var
ReversePos: Integer;
TmpItemCount: Word;
begin
ReversePos := $1000-1 - SizeOf(Word);
FItemCount := NtoLE(ItemCount);
Move(ItemCount, Buffer[ReversePos], SizeOf(Word));
ReversePos := $1000 - SizeOf(Word);
TmpItemCount := NtoLE(Word(FItemCount));
Move(TmpItemCount, Buffer[ReversePos], SizeOf(Word));
Stream.Write(Buffer[0], $1000);
{$IFDEF DEBUG_CHM_CHUNKS}