Browse Source

* Fix bug #36758, patch from Marcin Wiazowski to always use writebuffer

git-svn-id: trunk@44282 -
michael 5 years ago
parent
commit
ce3a9ee7b2
1 changed files with 5 additions and 12 deletions
  1. 5 12
      packages/paszlib/src/zstream.pp

+ 5 - 12
packages/paszlib/src/zstream.pp

@@ -56,7 +56,7 @@ type
 
         Tcompressionstream=class(Tcustomzlibstream)
         private
-          function ClearOutBuffer: Integer;
+          procedure ClearOutBuffer;
         protected
           raw_written,compressed_written: int64;
         public
@@ -206,13 +206,12 @@ begin
   get_compressionrate:=100*compressed_written/raw_written;
 end;
 
-Function TCompressionstream.ClearOutBuffer : Integer;
-
+procedure TCompressionstream.ClearOutBuffer;
 
 begin
   { Flush the buffer to the stream and update progress }
-  Result:=source.write(Fbuffer^,bufsize);
-  inc(compressed_written,Result);
+  source.writebuffer(Fbuffer^,bufsize-Fstream.avail_out);
+  inc(compressed_written,bufsize-Fstream.avail_out);
   progress(self);
   { reset output buffer }
   Fstream.next_out:=Fbuffer;
@@ -235,13 +234,7 @@ begin
       raise Ecompressionerror.create(zerror(err));
   until false;
   if Fstream.avail_out<bufsize then
-    begin
-      source.writebuffer(FBuffer^,bufsize-Fstream.avail_out);
-      inc(compressed_written,bufsize-Fstream.avail_out);
-      progress(self);
-      Fstream.next_out:=Fbuffer;
-      Fstream.avail_out:=bufsize;
-    end;
+    ClearOutBuffer;
 end;