]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
minigzip: restructure gzread() to get rid of unnecessary temporary variables.
authorMika Lindqvist <postmaster@raasu.org>
Wed, 27 May 2015 20:55:35 +0000 (23:55 +0300)
committerHans Kristian Rosbach <hk-git@circlestorm.org>
Tue, 3 Nov 2015 20:18:00 +0000 (21:18 +0100)
test/minigzip.c

index 0907e2c9fd7c6f026ea5d70bd464af0f92a2ab24..7279c0af9a05b447f82416097de30c9cc2b80a3a 100644 (file)
@@ -172,13 +172,9 @@ int gzread (gzFile, void *, unsigned);
 
 int gzread(gzFile gz, void *buf, unsigned len)
 {
-    int ret;
-    size_t got;
     z_stream *strm;
 
-    if (gz == NULL || gz->write)
-        return 0;
-    if (gz->err)
+    if (gz == NULL || gz->write || gz->err)
         return 0;
     strm = &(gz->strm);
     strm->next_out = buf;
@@ -186,20 +182,22 @@ int gzread(gzFile gz, void *buf, unsigned len)
     do {
         if (strm->avail_in == 0)
         {
-            got = fread(gz->buf, 1, BUFLEN, gz->file);
-            if (got == 0)
-                break;
             strm->next_in = gz->buf;
-            strm->avail_in = (uInt) got;
+            strm->avail_in = (uInt)fread(gz->buf, 1, BUFLEN, gz->file);
         }
-        ret = inflate(strm, Z_NO_FLUSH);
-        if (ret == Z_DATA_ERROR) {
-            gz->err = Z_DATA_ERROR;
-            gz->msg = strm->msg;
-            return 0;
+        if (strm->avail_in > 0)
+        {
+            int ret = inflate(strm, Z_NO_FLUSH);
+            if (ret == Z_DATA_ERROR) {
+                gz->err = ret;
+                gz->msg = strm->msg;
+                return 0;
+            }
+            else if (ret == Z_STREAM_END)
+                inflateReset(strm);
         }
-        if (ret == Z_STREAM_END)
-            inflateReset(strm);
+        else
+            break;
     } while (strm->avail_out);
     return len - strm->avail_out;
 }