aboutsummaryrefslogtreecommitdiff
path: root/gzread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gzread.c')
-rw-r--r--gzread.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gzread.c b/gzread.c
index 3811157..deea79b 100644
--- a/gzread.c
+++ b/gzread.c
@@ -24,11 +24,15 @@ local int gz_load(state, buf, len, have)
24 unsigned len; 24 unsigned len;
25 unsigned *have; 25 unsigned *have;
26{ 26{
27 z_ssize_t ret; 27 int ret;
28 unsigned get, max = ((unsigned)-1 >> 2) + 1;
28 29
29 *have = 0; 30 *have = 0;
30 do { 31 do {
31 ret = read(state->fd, buf + *have, len - *have); 32 get = len - *have;
33 if (get > max)
34 get = max;
35 ret = read(state->fd, buf + *have, get);
32 if (ret <= 0) 36 if (ret <= 0)
33 break; 37 break;
34 *have += (unsigned)ret; 38 *have += (unsigned)ret;