summaryrefslogtreecommitdiff
path: root/gzread.c
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2011-12-14 04:21:00 -0800
committerMark Adler <madler@alumni.caltech.edu>2011-12-14 04:21:00 -0800
commit2556706d67b471b45e0882ea4f32aa8b2efc14ec (patch)
treeed16d084027fa6726873eddfaa5187a64e05857e /gzread.c
parent850a198ff1879e506c961c91da30009539ed14b3 (diff)
downloadzlib-2556706d67b471b45e0882ea4f32aa8b2efc14ec.tar.gz
Document gzread() capability to read concurrently written files.
Also since gzread() will no longer return an error for an incomplete gzip file, have gzclose() return an error if the last gzread() ended in the middle of a gzip stream.
Diffstat (limited to 'gzread.c')
-rw-r--r--gzread.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gzread.c b/gzread.c
index 4bbbf52..09e5863 100644
--- a/gzread.c
+++ b/gzread.c
@@ -553,7 +553,7 @@ int ZEXPORT gzdirect(file)
int ZEXPORT gzclose_r(file)
gzFile file;
{
- int ret;
+ int ret, err;
gz_statep state;
/* get internal structure */
@@ -571,9 +571,10 @@ int ZEXPORT gzclose_r(file)
free(state->out);
free(state->in);
}
+ err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK;
gz_error(state, Z_OK, NULL);
free(state->path);
ret = close(state->fd);
free(state);
- return ret ? Z_ERRNO : Z_OK;
+ return ret ? Z_ERRNO : err;
}